Pear::Image_Graph その5
Image_Graph ロ-ソク足 ファイル作成
それでは引き続き、Image_Graph ロ-ソク足 ファイル p_gra-cand-1.php を作成します。
作成ファイル内容は、
63Pear Village に戻り
左サイドナビ「Pear::Image_Graph その5」の中の
Image_Graph ロ-ソク足チャ-ト PHP ファイル
から見てください。
Image_Graph ロ-ソク足 基本ファイルとの差分
ロ-ソク足 基本ファイルにはロ-ソク足表示しかありませんでした。
ここではこのグラフに、予測最高気温と予測最低気温の2本の折線グラフを追加し、3種類のグラフを表示します。
予測最高気温折線
予測最低気温折線
ロ-ソク足
の順に表示していきます。
必ずこの順序に表示しないとうまくいきません。
ロ-ソク足 基本ファイルとの違いは、
設定したデ-タを表示するオブジェクト $Plot ⇒($Plot[0]~$Plot[2])
表示データオブジェクト $Dataset ⇒($Dataset[0]~$Dataset[2])
をそれぞれ3つにすることです。
追加表示データ作成
それでは、追加となる予測最高気温と予測最低気温の2本の折線グラフデ-タを作成していきます。
Pear が好きな factory( ) メソッドを使用して表示データ作成をします。
この dataset Factory method は 表示データ $Dataset objects を作成します。
$Dataset[0] = Image_Graph::factory('dataset');
$Dataset[0] -> setName('Forecast-Max');
このなかに、addPoint( )メソッド
書式は addPoint(X 軸の値, Y 軸の値) を使用して、1日 の予測最高気温を設定します。
予測最高気温が 27℃ ならば
$Dataset[0] -> addPoint(1,27);
のように設定します。
引き続き、2~4日のデ-タも設定します。
$Dataset[0] -> addPoint(2,27);
$Dataset[0] -> addPoint(3,26);
$Dataset[0] -> addPoint(4,28);
次ぎに予測最低気温も同じように設定します。
$Dataset[1] = Image_Graph::factory('dataset');
$Dataset[1] -> setName('Forecast-Min');
予測最低気温が 20℃ ならば
$Dataset[1] -> addPoint(1,20);
のように設定します。
引き続き、2~4日のデ-タも設定します。
$Dataset[1] -> addPoint(2,27);
$Dataset[1] -> addPoint(3,26);
$Dataset[1] -> addPoint(4,28);
ロ-ソク足表示データ修正
ロ-ソク足表示データオブジェクトは $Dataset から $Dataset[2] に変更していますので、
$Dataset[2] -> addPoint(1,array( 'min' => 21, 'open' => 22, 'close'=> 25, 'max' => 26)); $Dataset[2] -> addPoint(2,array( 'min' => 20, 'open' => 25, 'close'=> 21, 'max' => 27)); $Dataset[2] -> addPoint(3,array( 'min' => 19, 'open' => 21, 'close'=> 24, 'max' => 25)); $Dataset[2] -> addPoint(4,array( 'min' => 21, 'open' => 24, 'close'=> 27, 'max' => 28));
とします。
予測最高気温折線グラフ表示
予測最高気温折線グラフを表示します。
$Plot[0] = $Plotarea -> addNew('area', array($Dataset[0]));
$Plot[0] -> setLineColor('red');
折線の色は赤にしました。
予測最高気温のデ-タは $Dataset[0] に入れたんでしたね。
予測最低気温折線グラフ表示
予測最低気温折線グラフを表示します。
$Plot[1] = $Plotarea -> addNew('area', array($Dataset[1]));
$Plot[1] -> setLineColor('blue');
折線の色は青にしました。
予測最低気温のデ-タは $Dataset[1] に入れたんでしたね。
グリッドの設定
X 軸のグリッドを作成します。
書式は、
$GridX = $Plotarea -> addNew('line_grid', null,IMAGE_GRAPH_AXIS_X);
です。
addNew( ) メソッド使用して、グラフ欄 $Plotarea にグリッド仕様を設定し $GridX オブジェクトを作成します。
第2引数は、null のダミ-、なんでもいいようです
第3引数は、X 軸なら IMAGE_GRAPH_AXIS_X
を設定します。
そして、setLineColor('色')メソッドを使用して
$GridX->setLineColor('lightgray@0.1');
とすれば灰色半透明の X 軸グリッドが完成します。
今回は Y 軸にもグリッドを設定します。
$GridY = $Plotarea -> addNew('line_grid', null, IMAGE_GRAPH_AXIS_Y);
$GridY->setLineColor('lightgray@0.1');
ロ-ソク足グラフ表示
ロ-ソク足を設定したデ-タを表示するオブジェクトは今回は $Plot[2] としました。
よって、ロ-ソク足を表示するときの書式より
$Plot[2] = $Plotarea -> addNew( 'Image_Graph_Plot_CandleStick', array($Dataset[2]));
となります。
ロ-ソク足表示データオブジェクトは $Dataset[2] でしたね。
ロ-ソク足色設定
グラフの色オブジェクト $Fill を factory( ) メソッドを使用して作成します。
$Fill = Image_Graph::factory('Image_Graph_Fill_Array');
そして、
close 値 < open 値 の時をロ-ソクの色を「緑の透明色」にしたければ
$Fill -> addColor('green@0.4', 'red');
close 値 > open 値 の時をロ-ソクの色を「赤の透明色」にしたければ
$Fill -> addColor('red@0.4', 'green');
@ 以下の数値は小さいほど透明になります。
次ぎに、
$Plot[2] -> setFillStyle($Fill);
とすれば、ロ-ソク足の色設定は終わりです。
グラフタイトル、XY 軸設定
- グラフタイトル
$Plot[2] -> setTitle( 'CandleStick Chart Daily 2017/6/1~4');
とするとグラフタイトルを設定することができます。
'CandleStick Chart Daily 2017/6/1~4'
がタイトルとなります。 そして、 $Legend->setFontSize(10); とし、グラフタイトルのフォントサイズを 10px にします。 - X 軸
$AxisX = $Plotarea -> getAxis(IMAGE_GRAPH_AXIS_X);
とし、X 軸のオブジェクトを取得します。
そして、
$AxisX->setLabelInterval(1);
とします。
もし、X 軸の目盛りを一つ置きにしたいならば、
$AxisX->setLabelInterval(2);
とします。 - Y 軸
$AxisY = $Plotarea -> getAxis(IMAGE_GRAPH_AXIS_Y);
とし、Y 軸のオブジェクトを取得します。
そして、
$AxisY->setLabelInterval(2);
とし、Y 軸の目盛りを一つ置きにします。
さらに、
Y 軸の最小値を 18 に
$AxisY -> forceMinimum(18);
Y 軸の最小値を 30 に
$AxisY -> forceMaximum(30);
にします。
できたグラフ画像を出力
ただ単に画面に出力したいならば、done() メソッドを使用して
$Graph->done();
で終わりです。
今回は、一旦画像ファイルを img フォルダに保存してから表示します。
フォルダ名とファイル名を $filename に設定し、
$filename = 'img/plot_cand-1.png';
$Graph -> done(array('filename' => $filename));
とし、IMG タグを出力すれば ok です。
echo "<img src = $filename>";
引き続き、Image_Graph ロ-ソク足 ファイルの動作確認をします。
Image_Graph ロ-ソク足 CSV 読込ファイル作成 に進む
Image_Graph ロ-ソク足 基本ファイル作成-2 に戻る