PHP - Web アプリケーション
はじめに、MySQL のインストール方法や PHP と Apache のインストール方法 をまとめてあります。自分にとって必要のあるところだけ参照してください。また、すべての環境をデフォルト設定が UTF-8 になるように構築しています。自分の環境に合わせて変更してください。インストール環境は Solaris 10(OpenSolaris) なので環境依存の部分は、読み替えて参照してください。本当は付属のパッケージでも良いが、ApacheやPHPはセキュリティーパッチをあてやすいようにソースから作っておく。
MySQL5 のセットアップ | |
PHP5 と Apache2 のセットアップ | |
JpGraph | |
MySQL に保存されているデータをもとに JpGraph でグラフ化してみる |
MySQL5 のセットアップ
ソースを入手します。
http://dev.mysql.com/
作業は スーパーユーザー(root) で行ってください。
# useradd -m mysql # passwd mysql New password: <mysql ユーザーのパスワードを設定> Re-enter new password: <確認のために同じパスワードを入力> # groupadd mysql # gzip -dc mysql-5.1.28-rc.tar.gz | tar xf - # cd mysql-5.1.28-rc # ./configure --prefix=/usr/local/mysql --with-mysqld-user=mysql \ > --with-charset=utf8 --with-collation=utf8_general_ci --with-extra-charsets=all \ > --with-innodb # make # make test (cd mysql-test; ./mysql-test-run --force) # make install
- ※
main.limit
でエラーになる件 Bug #37075 - ※
--with-charsets
でデフォルトの文字コードを設定できます。以前は良く binary にしておきました・・・
● データベースの初期化と起動
# /usr/local/mysql/bin/mysql_install_db --user=mysql # chown -R mysql:mysql /usr/local/mysql/var # /usr/local/mysql/bin/mysqld_safe --user=mysql &
※ 起動時に、キャラクタセットを指定するには ./mysqld --default-character-set=ujis ...
と実行します。
● 動作確認
# /usr/local/mysql/bin/mysqladmin version /usr/local/mysql/bin/mysqladmin Ver 8.42 Distrib 5.1.28-rc, .... ... Server version 5.1.28-rc-log Protocol version 10 Connection Localhost via UNIX socket UNIX socket /tmp/mysql.sock Uptime: 36 sec Threads: 1 Questions: 1 Slow queries: 0 Opens: 15 Flush tables: 1 ... # /usr/local/mysql/bin/mysqlshow +-----------+ | Databases | +-----------+ | mysql | | test | +-----------+ # /usr/local/mysql/bin/mysqlshow mysql Database: mysql +---------------------------+ | Tables | +---------------------------+ | columns_priv | | db | | func | ... | time_zone_transition | | time_zone_transition_type | | user | +---------------------------+ # /usr/local/mysql/bin/mysql -e "select host,db,user from db" mysql +------+---------+------+ | host | db | user | +------+---------+------+ | % | test | | | % | test\_% | | +------+---------+------+
● 終了方法
# /usr/local/mysql/bin/mysqladmin shutdown
● MySQL サーバ設定
mysqld_safe は、OS 起動時に起動されるように設定しておく。/usr/local/mysql/share/mysql/mysql.server
スクリプトを利用すると良い。また、ソースに含まれるコンフィグレーションファイル (support-files/my-xxxx.cnf)
で環境にあったものを /etc/my.cnf
としてコピーしておくことで、/etc/my.cnf
ファイルの編集でデータベースを最適化できます。huge > large > medium > small
の順で規模を選択できます。大規模データベースに合わせたコンフィグレーションファイルの場合、大容量のメモリが必要です。Solaris 10 では、SMFを利用します。
mysqldump
コマンドを利用する場合、必ず --default-character-set=
によって出力する文字コードを指定すると安全です。また、4.1以上の MySQLを利用するアプリケーションの場合、"SET NAMES キャラクターセット名
" という SQL 文(コマンド)を発行しておくことで漢字コードの変換ミスを防ぐことができます。
キャラクターセット
を my.cnf
で行う方法:
MySQL 4.1.15 以降 |
[mysqld]
default-character-set= |
調整するとよいパラメータ:
パラメータ | 意味 | 設定することで得る効果 |
key_buffer_size |
検索に使われるインデックスをバッファに保存する際のメモリサイズ(MyISAM) | パフォーマンスが向上 |
max_allowed_packet |
入力データ保持のための最大バッファサイズ | 大きな入力データを扱える |
max_connections |
認められる同時接続可能なクライアントの数 | 接続できるクライアント数 |
table_cache |
データのキャッシュサイズ(MyISAM) | ディスクのI/Oが減りパフォーマンスが向上 |
sort_buffer_size |
ソートをおこなう際に使用するバッファサイズ | ORDER BYやGROUP BYをクエリーに用いた場合のパフォーマンスが向上 |
record_buffer |
スキャンする各テーブルにこのサイズのバッファを割り当てる | インデックスを含まないクエリーの実行速度が上がる |
join_buffer_size |
完全結合(インデックスを使用しない結合)に使用されるバッファのサイズ | 大量のjoin の発行に対応(結合を速くする最良の方法はインデックスの追加です) |
innodb_buffer_pool_size |
検索に使われるデータとインデックスをバッファに保存する際のメモリサイズ(InnoDB) | パフォーマンスが向上。スワップに注意して多めに取る。 |
innodb_log_file_size |
更新ログを記録するファイルサイズ | 大きなサイズのデータの書き込み時の性能に影響するが、大きなサイズほどデータのリカバリ時間を要する |
innodb_flush_method |
OSによるバッファリングを抑制 | InnoDBのみを使っている場合、MySQLとOSとによるダブルバッファリングになるのを抑制する |
innodb_flush_logs_at_trx_commit |
ログファイルへの書き込み方法を設定 | 0:ログファイルを使用しない/1:ディスクへ書き込み/2:メモリへ書き込み |
query_cache_size |
実行した Query の SQL とその結果をキャッシュする機能で利用するキャッシュサイズ | 実行した Query の SQL とその結果をキャッシュし、同じ Query がキャッシュにある場合は、SQL を実行せずに、キャッシュの内容を返す機能 |
MySQL が MyISAMにおいて必要とするメモリサイズの計算(実メモリ+スワップ)
key_buffer + ( sort_buffer + record_buffer ) * max_connections = 必要とするメモリサイズ
● ちょっとユーザー管理
MySQL をインストールした際に、デフォルトでいくつかユーザーが作成されています。その中に、root および、利用できる範囲は限定されている無名のユーザーが登録されています。もしそれらのユーザーを削除したり、ユーザーのパスワードの設定や削除をしたいなら以下のように操作します。(使用しているサーバーのホスト名が foobar とします。)
# mysql mysql Welcome to the MySQL monitor. Commands end with ; or \g. Your MySQL connection id is 13 Server version: 5.1.28-rc-log Source distribution Type 'help;' or '\h' for help. Type '\c' to clear the buffer. mysql> select host,user,password from user; +-----------+----------+------------------+ | host | user | password | +-----------+----------+------------------+ | localhost | root | | | foobar | root | | | localhost | | | | foobar | | | +-----------+----------+------------------+ 4 rows in set (0.00 sec) mysql> delete from user where user=""; Query OK, 2 rows affected (0.00 sec) mysql> select host,user,password from user; +-----------+----------+------------------+ | host | user | password | +-----------+----------+------------------+ | localhost | root | | | foobar | root | | +-----------+----------+------------------+ 2 rows in set (0.00 sec) mysql> set password for root@localhost=password('newpassword'); Query OK, 0 rows affected (0.00 sec) mysql> select host,user,password from user; +-----------+----------+-------------------------------------------+ | host | user | password | +-----------+----------+-------------------------------------------+ | localhost | root | *05105863F2A24F0ACD70465AE78B4EEC89E54814 | | foobar | root | | +-----------+----------+-------------------------------------------+ 2 rows in set (0.00 sec) mysql> quit # mysql mysql ERROR 1045 (28000): Access denied for user 'root'@'localhost' (using password: NO) # mysql mysql -u root -p Enter password: <newpassword> Welcome to the MySQL monitor. Commands end with ; or \g. Your MySQL connection id is 13 Server version: 5.1.28-rc-log Source distribution Type 'help;' or '\h' for help. Type '\c' to clear the buffer. mysql> set password for root@localhost=password(''); Query OK, 0 rows affected (0.00 sec) mysql> quit #
PHP 5 + Apache2 のセットアップ
ソースを入手します。
http://httpd.apache.org/download.cgi
http://www.php.net/downloads.php
作業は スーパーユーザー(root) で行ってください。
ソースを展開し、コンパイル、インストールします。
Apache 2 のソースを展開して configure を実行
# cd /usr/local/src # gzip -dc httpd-2.2.9.tar.gz | tar xf - # cd httpd-2.2.9 # ./configure --enable-modules="so ssl" --with-ssl=/usr/sfw # make # make install # cd ..
Apache の設定ファイルである /usr/local/apache2/conf/httpd.conf
をチェックします。既に HTTP サーバーが起動している場合、それを停止するか、新しくインストールした Apache の ポート
を変更する。特に Listen, User, Group, ServerName
といったディレクティブはチェックしてください。
# edit /usr/local/apache2/conf/httpd.conf
Listen | httpd (HTTPサーバー) が、監視するポートを指定します。 |
User | httpd (HTTPサーバー)を起動するときのオーナーを指定します。 |
Group | httpd (HTTPサーバー)を起動するときの group を指定します。#-1 に設定されていてうまく動作しないときがあるので、nobody など実際に許可を与えたいグループに設定する。 |
ServerName | httpd (HTTPサーバー)を起動するホストとポートを指定します。DNS に登録されていない場合、IP Address を指定します。 |
また、デフォルトの charset が ISO-8859-1 なので自分の作った各ページにMETAタグで charset をきちんと書いていないと文字化けすることがあります。日本語がメインのサイトならば、/usr/local/apache2/conf/extra/httpd-languages.conf
を有効にして日本語をデフォルトになるように変更してもよい。
PHP のソースの展開とコンパイル(DSOを作成する)、gd ライブラリ以外は、OpenSolaris付属(Solaris Express Community Edition) のパッケージを利用(特に大意は無いので gd も付属でもよい)
# gzip -dc gd-2.0.35.tar.gz | tar xf - # cd gd-2.0.35 # ./configure ... ** Configuration summary for gd 2.0.35: Support for PNG library: yes Support for JPEG library: yes Support for Freetype 2.x library: yes Support for Fontconfig library: yes Support for Xpm library: yes Support for pthreads: yes ... # make # make install # cd ..
# bzip2 -dc php-5.2.6.tar.bz2 | tar xf - # cd php-5.2.6 # ./configure --with-mysql=/usr/local/mysql --with-pdo-mysql=/usr/local/mysql \ > --with-apxs2=/usr/local/apache2/bin/apxs --enable-mbstring --enable-mbregex \ > --enable-zend-multibyte --enable-gd-native-ttf --enable-gd-jis-conv \ > --with-gd=/usr/local --with-libxml-dir=/usr \ > --with-freetype-dir=/usr/sfw --with-curl # make # make test # make install
ここでは MySQLだけだが、PostgreSQL の場合には --with-pgsql=<PostgreSQLのインストール場所>
を、Oracle の場合には --with-oci8=<Oracle のインストール場所> --enable-sigchild
を指定します。
PHP の初期化ファイルの設定と Apache 2 の初期化ファイルの設定(AddType の .php のコメントをはずす。php4_moduleの LoadModuleは、上記のインストールで自動的に追記されています。)
# cp php.ini-recommended /usr/local/lib/php.ini # edit /usr/local/lib/php.ini
include_path = ".:/usr/local/lib/php" ... output_handler = mb_output_handler display_errors = On mbstring.language = Japanese mbstring.internal_encoding = UTF-8 mbstring.http_input = pass mbstring.http_output = pass mbstring.encoding_translation = Off mbstring.detect_order = SJIS,EUC-JP,JIS,UTF-8,ASCII mbstring.substitute_character = none; mbstring.func_overload = 0 mbstring.script_encoding = auto
register_globals
は、EGPCS(Environment, GET, POST, Cookie, Server)変数をグローバル 変数として登録するかどうかを指定します。デフォルトで Off になっています。いくつか、On にしないと動作しないアプリケーションがあるようですが、セキュリティーに考慮して On にしてください(セキュリティーといっても、変数を初期化せずに利用しているケースで問題があるようで、きちんと対処すれば問題無い?ようです...そんなプログラミングって、プログラミングの基本が出来てない気がするけれど...)。とはいっても、プログラミングする場合、register_globals=Off
にしてスーパーグローバル変数である $_ENV, $_GET, $_POST, $_COOKIE, $_SERVERを利用することをお勧めします(track_vars
:PHP 4.0.3 以降常に On
、variables_order
、gpc_order
をチェック)。
# edit /usr/local/apache2/conf/httpd.conf
#LoadModule php5_module modules/libphp5.so ... # PHP settings Include conf/extra/httpd-php.conf
# edit /usr/local/apache2/conf/extra/httpd-php.conf
# LoadModule LoadModule php5_module modules/libphp5.so # AddType AddType application/x-httpd-php .php AddType application/x-httpd-php-source .phps
Apache 2 を起動したら使用可能になります。
]# /usr/local/apache2/bin/apachectl start
Solaris 10 では、apachectl コマンドを直接利用せずに SMFを利用するとよい。
JpGraph
ソースを入手します。
http://www.aditus.nu/jpgraph/
http://ossipedia.ipa.go.jp/ipafont/
JpGraph のライブラリは、どこに置いても構いませんが PHP がサーチできるパス (include_path
)に置くか、インストールしたディレクトリを php.ini
の include_path
に追加すると良いでしょう。 ここでは、include_path = ".:/usr/local/lib/php"
となっているとして、/usr/local/lib/php/JpGraph
にライブラリをインストール(コピー)します。
JpGraph の設定は、キャッシュのディレクトリと TrueType フォントが含まれるディレクトリを指定します。デフォルトではIPAフォントが指定されているためダウンロードしてインストールします(Linuxの場合、ディストリビューションによっては既にインストールされている場合があります)。JpGraph で日本語を扱うには、文字コードをUTF-8 にする必要があります。
# unzip IPAfont00203.zip # mkdir -p /usr/local/share/fonts/truetype # cp IPAfont00203/*.ttf /usr/local/share/fonts/truetype/
● JpGraph の設定設定(jpg-config.inc.php
で、キャッシュのディレクトリと TrueType フォントが含まれるディレクトリと日本語のフォントを指定)
# gzip -dc jpgraph-2.3.3.tar.gz | tar xf - # cp -rp jpgraph-2.3.3/src /usr/local/lib/php/JpGraph # edit /usr/local/lib/php/JpGraph/jpg-config.inc.php 39行目 define("CACHE_DIR", "/tmp/jpgraph_cache/"); define("TTF_DIR", "/usr/X11R6/lib/X11/fonts/TrueType/"); define("MBTTF_DIR", "/usr/local/share/fonts/truetype/"); # mkdir /tmp/jpgraph_cache # chmod 777 /tmp/jpgraph_cache
※ IPAフォント(Ver.3 - OpenTypeフォント形式)を利用する場合、jpgraph_ttf.inc.php
を変更する必要があります。
# edit /usr/local/lib/php/JpGraph/jpgraph_ttf.inc.php 136行目 define('MINCHO_TTF_FONT','ipam.otf'); define('PMINCHO_TTF_FONT','ipamp.otf'); define('GOTHIC_TTF_FONT','ipag.otf'); define('PGOTHIC_TTF_FONT','ipagp.otf'); #
● サンプルのレーダーチャート
以下のサンプルが EUC
で書かれているとして mb_convert_encoding
を利用して UTF-8
にしています。サンプルが Shift-JIS
で書かれていれば sjis-win
を UTF-8
にするようにし、UTF-8
で書かれていれば変換の必要はありません。
<?php require_once("JpGraph/jpgraph.php"); require_once("JpGraph/jpgraph_radar.php"); // データ
$aryData = array(7, 10, 6, 8, 5); // 軸タイトル $aryTitle = array( mb_convert_encoding("走り", "UTF-8", "eucJP-win"), mb_convert_encoding("乗り心地", "UTF-8", "eucJP-win"), mb_convert_encoding("燃費", "UTF-8", "eucJP-win"), mb_convert_encoding("操作性", "UTF-8", "eucJP-win"), mb_convert_encoding("デザイン", "UTF-8", "eucJP-win") ); // レーダーグラフの初期化 $graph = new RadarGraph(350, 250, "auto"); // 背景の設定 $graph->SetColor("white"); $graph->SetFrame(false);
// グラフの描画位置
$graph->SetCenter(0.5, 0.55); // 軸の設定 $graph->axis->SetFont(FF_GOTHIC, FS_NORMAL); $graph->axis->title->SetFont(FF_GOTHIC, FS_NORMAL); $graph->axis->SetColor("#207870"); // グリッドの設定 $graph->grid->SetLineStyle("dotted"); $graph->grid->SetColor("gray"); $graph->grid->Show(); $graph->HideTickMarks(); // タイトルの設定 $graph->title->Set(mb_convert_encoding("ニコニコカーⅡ", "UTF-8", "eucJP-win")); $graph->title->SetFont(FF_GOTHIC, FS_NORMAL, 13); $graph->title->SetColor("#406898"); $graph->SetTitles($aryTitle); // プロットデータの作成 $plot = new RadarPlot($aryData); $plot->SetColor("#ff5588", "#ffeeee"); //$plot->SetFill(false); $plot->SetLineWeight(2); // プロットデータの追加
$graph->Add($plot); // グラフの描画 $graph->Stroke(); ?>
● サンプルの折線グラフ
以下のサンプルが EUC
で書かれているとして mb_convert_encoding
を利用して UTF-8
にしています。サンプルが Shift-JIS
で書かれていれば sjis-win
を UTF-8
にするようにし、UTF-8
で書かれていれば変換の必要はありません。
<?php require_once("JpGraph/jpgraph.php"); require_once("JpGraph/jpgraph_line.php"); require_once("JpGraph/jpgraph_canvas.php"); // データ $labelx = array("1999", "2000", "2001", "2002", "2003", "2004"); $data1 = array( 1683, 1719, 1754, 1883, 1502, 1677); $data2 = array( 1261, 996, 875, 794, 982, 1140); $data3 = array( 101, 230, 380, 513, 827, 1843); // Y軸用のコールバック関数 function yScaleCallback($aVal) { return number_format($aVal); } // グラフオブジェクトの生成 $graph = new Graph(500,400,"auto"); // 画像フォーマット $graph->img->SetImgFormat("jpeg"); $graph->img->SetQuality(80); // マージン left, right, top, bottom $graph->img->SetMargin(80,40,70,40); $graph->SetScale("textint"); $graph->SetFrame(false); $graph->SetColor('lightblue'); // タイトル $title = mb_convert_encoding("にこにこ村交通事情","UTF-8","eucJP-win"); $graph->title->Set($title); $graph->title->SetFont(FF_GOTHIC, FS_NORMAL, 14); // X,Y軸 $graph->xaxis->SetTickLabels($labelx); $graph->yaxis->SetLabelFormatCallback('yScaleCallback'); $graph->yaxis->SetTextLabelInterval(2); $graph->yaxis->HideZeroLabel(); $graph->yaxis->SetTitleMargin(55); $titley = mb_convert_encoding("人口","UTF-8","eucJP-win"); $graph->yaxis->title->Set($titley); $graph->yaxis->title->SetAngle(0); $graph->yaxis->title->SetFont(FF_GOTHIC, FS_NORMAL); $titlex = mb_convert_encoding("年度","UTF-8","eucJP-win"); $graph->xaxis->title->Set($titlex); $graph->xaxis->title->SetFont(FF_GOTHIC, FS_NORMAL); // グリッド $graph->xgrid->Show(true,false); $graph->ygrid->SetFill(true,'#EFEFFF@0.5','#DDEEFF@0.5'); // 凡例 $graph->legend->Pos(0.5, 0.08, "center", "top"); $graph->legend->SetLayout(LEGEND_HOR); $graph->legend->SetFont(FF_GOTHIC, FS_NORMAL); $graph->legend->SetShadow(false); $graph->legend->SetLineWeight(1); $graph->legend->SetColor('black','darkgray'); $graph->legend->SetFillColor('lightblue'); // 陸の交通手段 $legend1 = mb_convert_encoding("陸","UTF-8","eucJP-win"); $p1 = new LinePlot($data1); $p1->mark->SetType(MARK_FILLEDCIRCLE); $p1->mark->SetFillColor("blue"); $p1->mark->SetWidth(3); $p1->SetColor("blue"); $p1->SetCenter(); $p1->SetLegend($legend1); $graph->Add($p1); // 海の交通手段 $legend2 = mb_convert_encoding("海","UTF-8","eucJP-win"); $p2 = new LinePlot($data2); $p2->mark->SetType(MARK_SQUARE); $p2->mark->SetFillColor("red"); $p2->mark->SetWidth(4); $p2->SetColor("red"); $p2->SetCenter(); $p2->SetLegend($legend2); $graph->Add($p2); // 空の交通手段 $legend3 = mb_convert_encoding("空","UTF-8","eucJP-win"); $p3 = new LinePlot($data3); $p3->mark->SetType(MARK_DIAMOND); $p3->mark->SetFillColor("orange"); $p3->mark->SetWidth(6); $p3->SetColor("orange"); $p3->SetCenter(); $p3->SetLegend($legend3); $graph->Add($p3); // グラフの描画 $graph->Stroke(); ?>
MySQL に保存されているデータをもとに JpGraph でグラフ化してみる
まず作業用の DB を作成しアクセス可能なユーザーを設定する。
$ mysql -u root -p Enter password: <root password> Welcome to the MySQL monitor. Commands end with ; or \g. Your MySQL connection id is 68 Server version: 5.1.28-rc-log Source distribution Type 'help;' or '\h' for help. Type '\c' to clear the buffer. mysql> create database NIKONIKO; Query OK, 1 row affected (0.00 sec) mysql> grant SELECT,INSERT,UPDATE,DELETE,CREATE,DROP on NIKONIKO.* to analyst@'%' identified by 'chart'; Query OK, 1 row affected (0.00 sec) mysql> \q Bye $
続いて、テーブルを作成しデータをいくつか入れてみましょう。
$ mysql -u analyst -pchart NIKONIKO Welcome to the MySQL monitor. Commands end with ; or \g. Your MySQL connection id is 73 Server version: 5.1.28-rc-log Source distribution Type 'help;' or '\h' for help. Type '\c' to clear the buffer. mysql> create table CarReview ( -> name varchar(255), -> speed int(2), -> comfortable int(2), -> fuel int(2), -> operability int(2), -> design int(2)); Query OK, 0 rows affected (0.00 sec) mysql> insert into CarReview value ('ニコニコ7', 8, 3, 2, 7, 10); Query OK, 1 row affected (0.00 sec) mysql> insert into CarReview value ('ファミリー900', 6, 9, 7, 6, 4); Query OK, 1 row affected (0.00 sec) mysql> \q Bye $
このデータを PHPから参照しグラフで表示してみます。以下のプログラムは、すべて UTF-8 で記述します。また、どう動いているか理解するためだけのロジックしか記述していません。きちんとエラー処理やセキュリティー対策など行っていないので扱いには十分注意してください。
メインプログラム(car_view.php)
<html> <head> <meta http-equiv=content-type content="text/html; charset=UTF-8"> <title>ニコニコ村 車情報</title> </head> <body> <h3>ニコニコ村 車情報</h3> <table> <tr> <?php // DB情報 $sDsn = "mysql:dbname=NIKONIKO;host=localhost"; $sUser = "analyst"; $sPasswd = "chart"; // DBアクセス try { $objDB = new PDO($sDsn, $sUser, $sPasswd); $objDB->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); $sSql = "select * from CarReview"; $objSta = $objDB->query($sSql); while ( $aryRet = $objSta->fetch(PDO::FETCH_ASSOC) ) { echo '<td><img src="car_chart.php?name='.rawurlencode($aryRet["name"]); echo '&s='.$aryRet["speed"]; echo '&c='.$aryRet["comfortable"]; echo '&f='.$aryRet["fuel"]; echo '&o='.$aryRet["operability"]; echo '&d='.$aryRet["design"]; echo '"></td>'."\n"; } } catch (PDOException $e) { echo "<td>".$e->getMessage()."</td>\n"; } ?> <tr> </table> </body> </html>
レーダーチャート表示プログラム(car_chart.php)
<?php require_once("JpGraph/jpgraph.php"); require_once("JpGraph/jpgraph_radar.php"); // データ $sName = $_GET["name"]; $aryData = array($_GET["s"],$_GET["c"],$_GET["f"],$_GET["o"],$_GET["d"]); // 軸タイトル $aryTitle = array( "走り", "乗り心地", "燃費", "操作性", "デザイン" ); // レーダーグラフの初期化 $graph = new RadarGraph(350, 250, "auto"); // 背景の設定 $graph->SetColor("white"); $graph->SetFrame(false);
// グラフの描画位置
$graph->SetCenter(0.5, 0.55); // 軸の設定 $graph->axis->SetFont(FF_GOTHIC, FS_NORMAL); $graph->axis->title->SetFont(FF_GOTHIC, FS_NORMAL); $graph->axis->SetColor("#207870"); // グリッドの設定 $graph->grid->SetLineStyle("dotted"); $graph->grid->SetColor("gray"); $graph->grid->Show(); $graph->HideTickMarks(); // タイトルの設定 $graph->title->Set($sName); $graph->title->SetFont(FF_GOTHIC, FS_NORMAL, 13); $graph->title->SetColor("#406898"); $graph->SetTitles($aryTitle); // プロットデータの作成 $plot = new RadarPlot($aryData); $plot->SetColor("#ff5588", "#ffeeee"); //$plot->SetFill(false); $plot->SetLineWeight(2); // プロットデータの追加
$graph->Add($plot); // グラフの描画 $graph->Stroke(); ?>
ブラウザで表示すると以下のようになります。