「Image_Graph」を使ってy軸の数値が反転したグラフを作成する
昨日の問題を解決したので報告。
1┼ │ 5┼ │ 10└┼-┼-┼-┼-┼ 1 2 3 4 5
上記のようなレイアウトのグラフが作れないという問題だったが、グラフを2個重ねることによって解決できたので報告。
(ソースをいじれば1個のグラフでいけそうだったけど、面倒くさかったのでやめました)
作り方
- 同じ線グラフを2個作る(AとBを作る)
- 片方の線グラフ(B)の線を消す
- Aのx線を消す
- Bのy線を消す
- Aのグラフをy軸に対して反転
あとはpadding等で位置を調整してあげればOKです。
こんな感じになります。
以下ソース
<?php include_once('Image/Graph'); // create the graph $Graph =& Image_Graph::factory('graph', array(400, 300)); // add a TrueType font //$Font =& $Graph->addNew('font', 'Gothic'); // set the font size to 11 pixels //$Font->setSize(10); //$Graph->setFont($Font); // setup the plotarea, legend and their layout $Graph->add( $Plotarea1 = Image_Graph::factory('plotarea') ); $Graph->add( $Plotarea2 = Image_Graph::factory('plotarea') ); $Dataset1 =& Image_Graph::factory('dataset'); $Dataset1->addPoint('a', 19); $Dataset1->addPoint('b', 12); $Dataset1->addPoint('c', 16); $Dataset1->addPoint('d', 7); $Dataset1->addPoint('e', 21); $Plot1 =& $Plotarea1->addNew('line', array(&$Dataset1)); $Plot1->setLineColor('red'); $Plotarea1->hideAxis('x'); $Plotarea1->setAxisPadding(20, 'left'); $Plotarea1->setAxisPadding(30, 'bottom'); $AxisY1 =& $Plotarea1->getAxis('y'); $AxisY1->setInverted(true); $AxisY1->forceMaximum(25); $Plot2 =& $Plotarea2->addNew('line', array(&$Dataset1)); $Plot2->hide(); $Plotarea2->hideAxis('y'); $Plotarea2->setAxisPadding(30, 'left'); // output the Graph $Graph->done(); ?>