忍者ブログ

VB.NET-TIPS などプログラミングについて

VB.NETのTIPS(小技集)を中心に、Javascript、PHP その他のプログラミングについて少し役に立つ情報を発信します。いわゆる個人的な忘備録ですが、みなさんのお役に立てれば幸いです。

PHP pChart2.0を利用してグラフをPNGファイル(ブラウザ)に出力する方法について

今回はPHPでグラフ描画をファイルに出力できるライブラリである pChart の紹介を行いたいと思います。
この pChart ですが結構前から在る様で、名前は知ってはいたのですが、PHPでグラフを描画する処理の仕事も無かったので、使用することはありませんでした。

実は今回、ちょっとPHPでPDF出力の中にグラフ表示を行うができないかとの依頼があり、調べてみることになりました。
グラフ用のライブラリは JpGraph , phpChart , pChart などがありますが、商用で無料で使えるのは pChart ぐらいしかなかったので これを使用することにしました。

pChart ですがバージョンが pChart-1.XpChart-2.X が在る様です。
pChart-1.X は古そうで PHP7 以降には動きそうになかったので pChart-2.X の方を選択しました。

このライブラリのサイトは以下ですが、このサイトの中の DOWNLOAD のページから最新と思われる pChart 2.1.4 (zip) をダウンロードしてみました。

pChartのサイト

pChart 2.1.4 (zip) の簡単なテストを行う為に以下のソースを実行させてみます。 (ソースの内容はネットに載っていたものを少し変えましたが)

pChart クラスを使用したPNGファイルのブラウザ出力

以下の例では4個のデータを持つバーグラフをPNGファイルとしてブラウザ出力しています。

<?php   
require_once("../class/pData.class.php");
require_once("../class/pDraw.class.php");
require_once("../class/pImage.class.php");

$data = new pData();
$data->addPoints([1, 2, 3, 4], 'data1');
$data->addPoints(['A', 'B', 'C', 'D'], 'labels');
$data->setAbscissa('labels');
 
$image = new pImage(800, 400, $data);
$image->setGraphArea(50, 30, 700, 360);
$image->setFontProperties(['FontName' => '../fonts/calibri.ttf', 'FontSize' => 15]);
$image->drawScale(['Mode' => SCALE_MODE_ADDALL]);
$image->drawStackedBarChart();
$image->autoOutput('graph.png');
?>

これを実行してもエラーが次々と表示されて上手くいきませんでした。
ライブラリのソースを見ると array() 変数の初期化に $data = "" などとなっていて、 これが原因で PHP7 では動かない様です。

ソースをみると上記の様な記述が結構な数があったので、ライブラリを触るのはあきらめて、 他にいい方法がないかネットで調べてみました。
調べていると以下のサイトを見つけました。どうも上記のバグ?を修正したものを公開している様です。

pChart2.2.0のソース公開場所

この中の pChart2.2.0 のソースをダウンロードして上記のソースを実行すると以下の様になりました。


このライブラリですが GPL3.0 でのライセンスになっているので、なんとも言えませんが商用でも使えそうです。

今更感はありますが、このグラフ描画のライブラリの機能を調べていきたいと思います。












PR

コメント

コメントを書く