pChart
グラフをPHPで描画する必要があり、pChartを使うことにした。最近はFlashやJavaScriptでグラフを描画させるのが流行だが、今回はクライアントのブラウザが貧弱な可能性があるので、サーバサイドで処理をして絵柄を出力する方法を採用することにした。
PHPでのグラフ描画は久しぶり。検索してヒットしたのがpChart。昔使っていたphplotは検索でほとんどヒットせず(あんまり使われてないのか)、jpGraphは有償。ということで、見た目も悪くないpChartを使ってみることにした。
サンプルを試すとNoticeレベルのエラーが発生する。
Notice: Uninitialized string offset: 0 in /home/cwj/cwj.minibird.jp/public_html/pchart/pChart/pData.class on line 127
ということでファイルを修正する。pChart/pData.classの125行目($ID=0;の下)に以下の行を挿入。
if(!is_array($this->Data)){$this->Data=array();}
初期化忘れがあるようだ。これでエラーは出なくなったが、ダウンロードしたファイルに含まれるExample1.phpにアクセスしても何も出力されない。なぜ、なぜ。しかたなくひとつずつ確認していくことにしたら、一番最後のグラフを出力しているところで処理が止まっている。ここ。
$Test->Render(“example1.png”);
やむなくソースコードを確認する。確認したのはpChart/pChart.class。で、見てみたらimagepngでファイル名の引数を与えている!。サーバ内を確認すると、確かにexample1.pngができている。そういうことだったのか。
で、調べてみたら別のメソッドが用意されていたStroke()ってやつ。こちらに書きなおして、再度ウェブからアクセスすると無事グラフが描画された。素人的な考えだけど、サンプルスクリプトはStroke()を使ってくれたほうがいいのに。何も出力されないので、PHPを始めたばかりの人だと、使用を諦めた人もたくさんいるんじゃなかろうか。