Image_Graphの円グラフ
PearのImage_Graphのグラフ描画サンプルで紹介されていたImage_Graph Samples。
Image_Graphって便利だなぁと思ったのですが、まともなドキュメントがどこにもないのですね。。。
(オープンソースではありがち)
phpDocumenterとか使えばいいのかな。
よくわからないけど。
とりあえず、円グラフが欲しかったので、Sample - Show pie chartをちょこっと触ってみました。
[php num=1] <?php require_once ‘Image/Graph.php’;
// create the graph // Image_Graphってのは Image_Graph::factory で各部品のインスタンスをぼこぼこ作っていき、 // それの組み合わせでグラフを生成するらしい。 // factoryの第1引数は エイリアス(Image_Graph 内でクラスとの関連付が定義されている)、 // メソッドfactoryの第2引数はgraphオブジェクトコンストラクタへの引数となっている。 // 第2引数が、(連想配列ではなく)ただの配列っていうのはどうかな。 // PEARの他のパッケージ(DB_DataObject)とかJavaScriptのprototype.jsみたいに、 // array( ‘width’=>200;’height’=>200;)となったほうが分かりやすいんじゃないの。
$Graph =& Image_Graph::factory(‘graph’, array(200,200));
// add a TrueType font // フォントはとりあえずパス。 $Font =& $Graph->addNew(‘font’, ‘Verdana’); // set the font size to 11 pixels $Font->setSize(8); $Graph->setFont($Font);
// create the plotareas
// 描画領域インスタンスの生成。
// 多分・・・、hideAxis(座標の表示非表示?)、setPadding ってあるぐらいだからきっとそうなんだろう。
$Plotarea =& $Graph->addNew(‘plotarea’);
$Plotarea->hideAxis();
$Plotarea->setPadding(0);
// create the dataset // 元ネタは’random’になっていたのだけども、 // これは 処理してほしい x、y の二次元データ(テーブル)を生成するところ。 // (この生成処理がなければ、データを食わせられない)。 // データをImage_Graph用にインスタンス化するクラスは汎用的に使われるっぽいので、 // Image_Graph で取り扱われるデータは基本的には二次元データってことか。 // ただ円グラフの場合、採用される値の次元は一次元だったりするので、 // その場合、y が値として採用されるようだ。 // なお下の例のように、1次元配列(値オンリー)から生成するのも可能。 $datas=array(1,2,3,4,5,6,7,8,9,10); $Dataset =& Image_Graph::factory(‘dataset’,array($datas));
// create the 1st plot as smoothed area chart using the 1st dataset // 円グラフインスタンスト(Plot)に先程生成したデータセットインスタンスを食わせて生成する。 // setDiameter は直径の設定。 // setStartingAngle は円グラフの開始起点の角度。0時の位置から始めたいので、-90(度)にする。 $Plot =& $Plotarea->addNew(‘Image_Graph_Plot_Pie’, $Dataset); $Plot->setDiameter(-1); $Plot->setStartingAngle(-90);
// set a line color // 読んで字の如く、線の色設定(多分)。 $Plot->setLineColor(‘gray’);
// set a standard fill style // 色の設定らしい。 // ‘green@0.2′だが、’green’の部分は Image_Color で設定されている定義名(多分)。 // @0.2ってのは濃度。0.0〜1.0まで設定できるみたい。 $FillArray =& Image_Graph::factory(‘Image_Graph_Fill_Array’); $Plot->setFillStyle($FillArray); $FillArray->addColor(‘green@0.2′); $FillArray->addColor(‘blue@0.2′); $FillArray->addColor(‘yellow@0.2′); $FillArray->addColor(‘red@0.2′); $FillArray->addColor(‘orange@0.2′);
// グラフの実際の生成。
$Graph->done();[/php]
ただ、これで出来上がった円グラフは見た目がややしょっぱい。
もっとリッチにする方法もあるらしいけど、とりあえず。