Webサイトを構築していると、サイトの運営状況やアクセス数の管理など、さま ざまな場面でグラフを使用する必要が出てきます。 自分でグラフの描画を行うスクリプトを1から作るのは非常に大変ですが、Web上 には公開されているグラフ描画ライブラリが数多く存在します。 今回はその中から7つのグラフ生成ツールを紹介したいと思います。 ここでは各ライブラリを使用して、最もシンプルな棒グラフの生成方法を紹介し ます。
前編後編に分けて紹介し、前編ではPEAR::Image_Graph、JpGraph、PHP/SWF Charts、HTML-GRAPHs(PHP)を紹介します。
・PEAR::Image_Graph http://pear.veggerby.dk/
PEARのグラフ生成ライブラリです。 オープンソースのグラフ描画ライブラリ GraPHPite を元に作成されています。 PEAR::Image_Graphを使用するには、PEAR::Image_Canvas、PEAR::Image_Colorが 必要です。また、オプションとしてPEAR::Number_RomanとPEAR::Number_Wordsが 使用可能です。
現在14種類のグラフに対応しており、ほとんどの属性のカスタマイズが可能です。 PHP4・PHP5に対応しています。 グラフの生成方法は以下のようになります。
image_graph.php
<?php
require_once 'Image/Graph.php';
$Graph =& Image_Graph::factory('graph', array(400, 300));
$Plotarea =& $Graph->addNew('plotarea');
$Dataset =& Image_Graph::factory('dataset');
$month_list = array("Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul",
"Aug", "Sep", "Oct", "Nov", "Dec");
foreach ($month_list as $month) {
$Dataset->addPoint($month, rand(1,30));
}
$Plot =& $Plotarea->addNew('bar', $Dataset);
$Plot->setFillColor('green@0.1');
$Graph->done();
?>
あとはこのスクリプトをHTMLの<img>タグのsrc属性に指定して読み込むだけです。
・JpGraph http://www.asial.co.jp/jpgraph/
スウェーデンのAditus社が製作しているグラフ生成ライブラリです。 日本ではアシアル株式会社がローカライズ・販売しています。
20種類以上の形式をサポートし、プロフェッショナル版を購入するとさらに5種 類の形式が使用可能です。 商用目的の場合はプロフェッショナル版のライセンスを購入する必要があります。 キャッシュ機能を備え、負荷の高いアプリケーションでも使用することができます。 PHP4・PHP5に対応しています。 グラフの生成方法は以下の通りです。
jpgraph.php
<?php
include ("jpgraph/src/jpgraph.php");
include ("jpgraph/src/jpgraph_bar.php");
$month_list = $gDateLocale->GetShortMonth();
for( $i=0; $i<12; $i++) {
$datay[] = rand(1,30);
}
$graph = new Graph(300,200,'auto');
$graph->SetScale("textlin");
$graph->xaxis->SetTickLabels($month_list);
$plot = new BarPlot($datay);
$graph->Add($plot);
$graph->Stroke();
?>
あとはImage_Graphと同様に<img>タグのsrc属性に指定して読み込みます。
・PHP/SWF Charts http://www.maani.us/charts/index.php
PHPでスクリプトを記述し、FLASH形式でグラフを出力するという変り種のグラフ 生成ライブラリです。 FLASHを使用しているだけあって、非常に見栄えが良く、視覚効果に富んだグラ フを簡単に生成することができます。
開発者はライセンスを購入する必要はありませんが、サイトの運営者はライセン スを購入するか、グラフのリンク先をPHP/SWF ChartsのWebサイトに設定してお く必要があります(デフォルトで設定されています)。 グラフの生成方法は以下のようになります。
phpswfcharts.php
<?php
include "charts/charts.php";
$chart [ 'chart_data' ] = array (
array ( "", "Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul",
"Aug", "Sep", "Oct", "Nov", "Dec" ),
array ( "example", 1,2,3,4,5,6,7,8,9,10,11,12)
);
SendChartData ( $chart );
?>
次にこのスクリプトを表示するPHPスクリプトから読み込みます。
<?php
include "charts/charts.php";
echo InsertChart ( "charts/charts.swf", "charts/charts_library",
"phpswfcharts.php" );
?>
FLASHを表示する<object>タグ自体をInsertChart関数で出力するためこのような 実装方法になります。 表示する値と各タイトルを一つの配列内に収めなければならない点はちょっと面 倒な気もします。
・HTML-GRAPHs(PHP) http://www.gerd-tentler.de/tools/phpgraphs/
画像ではなくHTMLでグラフを出力するライブラリです。 ライブラリ自体が1ファイルだけで構成されており、非常にシンプルなのでそれ ほど凝ったグラフは生成できないようですが、とりあえず素早くグラフを作成し たいという時は重宝するでしょう。
付属のreadme.txt、ライブラリ本体のgraphs.inc.phpには簡単な設定方法が記載 されているので、これ見ながらサンプルスクリプトをいじればなんとなく作れて しまいます。 現在棒グラフとフェーダーグラフのみが作成できます。
基本的にフリーで使用することができますが、開発は寄付で賄われているため、 商用利用の場合は6ユーロ以上の寄付をしてほしいとのことです。 グラフの作成方法は以下のようになります。
html_graphs.php
<?php
include_once("Html_Graphs/graphs.inc.php");
$graph = new BAR_GRAPH("vBar");
foreach (range(1,12) as $value) {
$data[] = rand(1,30);
}
$month_list = array("Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul",
"Aug", "Sep", "Oct", "Nov", "Dec");
$graph->values = $data;
$graph->labels = $month_list;
echo $graph->create();
?>
最後の$graph->create()でHTMLが出力されるため、<img>タグなどには含めずそ のまま出力する必要があります。