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)とかJavaScriptprototype.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] ただ、これで出来上がった円グラフは見た目がややしょっぱい。
もっとリッチにする方法もあるらしいけど、とりあえず。