PHPでグラフを作ろう! (gd/pChart編)

PHP でいろいろとプログラムを作っていると、あるデータをグラフ化したくなってきます。そこで、グラフを作成するモジュールを探して使ってみることにします。JpGraphを利用してのグラフ作成は何度か行っているので、今回は pChart を使ってみます

* PHPの状態と GD モジュール

PHP で、pChartするのに GD モジュールを有効にしなくてはなりません。

PHP の現在の状態を確認してください。

<?php
  phpinfo();
?>

その際、GD モジュールが enabled になっているか確認してください。PHP の現在の状態が以下のようになっていることを確認してください。以下のすべてが有効になっている必要はありませんが、GD, FreeType, JPEG, PNGは有効になっている方が良いでしょう。

gd

gdが無ければ、パッケージをインストールしてください。

* pChart (a PHP Charting library) クラス・ライブラリ

● 入手

必要なモジュールをダウンロードしてインストールします。必要があれば、IPAフォントといった日語のフォントを入手すると良いでしょう。

pChart http://pchart.sourceforge.net/
IPA フォント http://ossipedia.ipa.go.jp/ipafont/
Takao フォント https://launchpad.net/takao-fonts

JpGraph のライブラリは、どこに置いても構いませんが PHP がサーチできるパス (include_path)に置くか、インストールしたディレクトリを php.iniinclude_path に追加すると良いでしょう。 ここでは、include_path = ".:/usr/share/php:/usr/share/pear" となっているとして、/usr/share/pear/pChart にライブラリをインストール(コピー)します。

    # rar x pChart.1.27d.rar
    # cp -r pChart /usr/share/pear/

フォントに関しては、/usr/share/fonts/truetype以下に用意してあるものとします。(展開したものをコピーするなどしておく)

● サンプル(円グラフ)

簡単な円グラフを作ってみましょう。以下のプログラムを適当なファイル名で Web サーバーの DocumentRoot下に置き、ブラウザーから実行すると円グラフが表示されます。pChart で日本語を扱うには、文字コードをUTF-8 にする必要があります。必要があれば mb_convert_encoding を利用して eucJP-winsjis-winから UTF-8 に変換してください。

<?php
/*
 * ニコニコ村
 */
 
// クラス
include("pChart/pData.class");
include("pChart/pChart.class");
 
define("DRAW_FONT",    "/usr/share/fonts/truetype/takao/TakaoGothic.ttf");
 
// データ$data = new pData;
$data->AddPoint(array(43,10,32,15),"Serie1");
$data->AddPoint(array("好き","嫌い","わからない","無回答"),"Serie2");
$data->AddAllSeries();
$data->SetAbsciseLabelSerie("Serie2");
 
// グラフ初期化
$pie = new pChart(430,330);
$pie->drawFilledRoundedRectangle(6,6,400,300,5,240,240,240);  // x,y,w,h,,r,g,b
$pie->drawRoundedRectangle(5,5,400,300,5,230,230,230);        // x,y,w,h,,r,g,b
   
// 円グラフ
$pie->setFontProperties(DRAW_FONT,10);
$pie->setShadowProperties(2,2,200,200,200);   // x,y,r,g,b
$pie->drawFlatPieGraphWithShadow($data->GetData(),$data->GetDataDescription(),
    160,160,90,PIE_PERCENTAGE,10);            // x,y,radius
// 凡例
$pie->drawPieLegend(290,20,$data->GetData(),$data->GetDataDescription(),250,250,250);  

// タイトル
$pie->setFontProperties(DRAW_FONT,14);
$pie->drawTitle(15,25,"ニコニコ村について",0,0,0);

// 描画
$pie->Stroke();
?>
円グラフ

● サンプル(レーダーチャート)

今度は、レーダーチャートを作ってみましょう。以下のプログラムを適当なファイル名で Web サーバーの DocumentRoot下に置き、ブラウザーから実行するとレーダーチャートが表示されます。

<?php
/*
 * にこにこカー GTR
 */
 
// クラス
include("pChart/pData.class");
include("pChart/pChart.class");
 
define("DRAW_FONT",    "/usr/share/fonts/truetype/takao/TakaoGothic.ttf");
 
// データ
$DataSet = new pData;
$DataSet->AddPoint(array("走り","デザイン","操作性","燃費","乗り心地"),"Label");
$DataSet->AddPoint(array(3,5,2,4,3),"Serie");
$DataSet->AddSerie("Serie");
$DataSet->SetAbsciseLabelSerie("Label");

// 初期設定
$Test = new pChart(420,420);
$Test->setFontProperties(DRAW_FONT,8);
// 外枠
$Test->drawFilledRoundedRectangle(7,7,400,400,5,240,240,240);
$Test->drawRoundedRectangle(5,5,400,400,5,230,230,230);
// レーダー描画エリア
$Test->setGraphArea(55,55,340,340);
// 内枠
$Test->drawFilledRoundedRectangle(30,30,370,370,5,255,255,255);
$Test->drawRoundedRectangle(30,30,370,370,5,220,220,220);

// レーダー設定
$Test->drawRadarAxis($DataSet->GetData(),$DataSet->GetDataDescription(),TRUE,
    20,100,100,100,130,230,230);  // サイズ, 文字RGB, 線RGB
// グラフ設定
$Test->drawFilledRadar($DataSet->GetData(),$DataSet->GetDataDescription(),
    40,20);                       // opacity, サイズ

// タイトル
$Test->setFontProperties(DRAW_FONT,10);
$Test->drawTitle(0,22,"にこにこカー GTR",50,50,50,400);

// 描画
$Test->Stroke();
?>
レーダーチャート

● ドキュメント

pChart は、ドキュメントとサンプルがサイト上に充実しているのでいろいろなグラフを作るのに役立ちます。http://pchart.sourceforge.net/documentation.php