PHPでもグラフは描画できるぞい

この記事はだいぶ前に書かれたものなので情報が古いかもしれません

google analyticsみたいに、日ごとのアクセス数みたいなのをグラフで出せたら良いな~と前々から思っていた反面、それをやるにはFLASHとかSilverlightとか覚えないといけないんだろうとずっと思い込んでいまして、だからずっと敬遠しておりました。

でももしかしたらPHPやJavascriptだけでも何とかできるんじゃね? とふと思ったので調べてみたら、実際に何とかできるってことが分かりました。うん、もっと早く思っとけば良かったよ。

円グラフに関してはHTML5のcanvasタグでやれることってことは、いつぞやの記事でも述べましたが、今回は折れ線グラフや棒グラフを描画したいということで、まあもしかしたら同じようにcanvasタグ使えば実現できるのかもしれないけど、一応別の方法を模索した結果、PHPでグラフを作るライブラリを発見いたしました。

それがこちら。JpGraph

PHPにはimagepngとかimagejpegみたいにPNG画像やJPEG画像を生成する関数があるんですけど、このJpGraphでやっていることは、これらの関数を使って作成したグラフを画像で出力しているみたいです。

かなりいろいろなグラフが作成できるみたいです。こちらのサイトさんでJpGpraphを使ったグラフのサンプルを載せているんですが、折れ線グラフや棒グラフはもちろん、円グラフやガントチャート、レーダーチャートに株価の何とかチャートみたいなものまで、およそ一般的に使われそうなグラフはほぼ何でも作成できるっぽいです。


ダウンロードと各グラフの作成方法

わざわざ小見出しにする必要なんてないんですが……

ダウンロードは簡単。上記のJpGraphのサイトのヘッダメニューにDownloadってのがあるんで、そっからダウンロードできます。

各グラフの作成方法についても、基本的な使い方はサンプルを見ればだいたい分かります。出力されるグラフとそのソースが載っているので、まあ早い話がコピペすれば同じグラフを作成することが可能です。

……と言いたいところなんですが、確定的な原因は分からないですけど、たま~にそうもいかない場合もあるみたいです。ライブラリのバージョンの関係かもしれん。その話はまた次回にでもします。今日まとめて書くと長くてごちゃごちゃしてしまいそうやわ。


特定のページの内部に表示するには

JpGraphでグラフを作成するとき、画像をファイルとして保存するなら問題ないんですが、直接ブラウザに描画する場合はContent-Typeがimage/pngとかimage/jpegとかになっています。

Content-Typeが何なのかってのは、以前PHPで画像ダウンロードボタンを作ったときにもちょこっと書いたんですが、これがimage/pngとかimage/jpegとかになっているとブラウザはこのページをHTMLファイルとは認識せずに画像ファイルだなと認識してしまうので……えーとつまり……普通にHTMLで作成したページの途中にimagepngなどで描画した画像を出力することはできないってことですね。

たとえばこのブログの記事の途中にimagepngで画像を出力するとか。

もちろん画像に適当なファイル名をつけて任意の場所に保存した場合は別ですよ? その場合は普通にimgタグとか使って出力することができます。どこにも保存しないで直接出力する場合ね。

いくつかやり方が考えられるような気がしないでもないですけど……僕はiframeとjqueryを使って遅延的に読み込むことにしました。その話も次回しますね。参考になるかは分からないけど。




今日はライブラリの紹介しかしてないので、実際の使い方について詳しく知りたい方は僕が日頃から多用しているありがたいお言葉を残しておきますので、今日のところはそれを参考にしてください。

「ググレカス」

『jpgraph 使い方』でググった結果

個人的には結構使えるかなと思っているので、もし生粋のPHPプログラマーでグラフの作成に悩んでいる人は、使ってみるのも良いんじゃないでしょうか。



これも参考になるか分からないけど、僕が折れ線グラフや棒グラフを作ったときの話も良かったらどぞ。

折れ線グラフを作ったお話

棒グラフを作ったお話

まだコメントはいただけてないみたい……
もしかしたら何か関連しているかも?