遅行スパンクラス

遅行スパンクラスファイル作成 その7

遅行スパンクラスファイル delay_dif-cla-gra.php
の各メソッドを作り込んでいきます。
作成ファイル内容は、
63Pear Village に戻り
左サイドナビ「遅行スパンクラス」の中の
遅行スパンクラス PHP ファイル
から見てください。
遅行スパンクラスファイル各メソッドの作成の流れについてはフロ-チャ-トを 遅行スパンクラスファイル作成 から見てください。
ここまで、遅行スパンクラス チャ-ト表示メソッド function graph の表示デ-タを作成してきました。
遅行スパンクラスファイル作成 その6を見てください。
引き続き、遅行スパンクラス チャ-ト表示メソッド function graph を作成します。

チャ-ト表示メソッド グラフ台紙作成

それでは、チャ-ト表示するグラフ台紙を作成していきます。
PHP でグラフを作成するには、いくつかの方法がありますが、ここでは、 Composer PHPlot ライブラリ-を使うことにします。
使い方の詳細については PHPlot グラフ表示概要から見てください。
ここから手繰って行くとわかると思います。
ロ-ソク足チャ-トについては、特に個別に PHPlot ロ-ソク足チャ-ト で解説していますのでこちらも参照してください。

初期値設定

まずは、PHPlot パッケ-ジを読み込みます。
require_once 'davefx/phplot/phplot/phplot.php';
そして初期値を設定します。

  1. 出力チャ-トファイル パス+ファイル名

    チャ-ト $jpg3 を img フォルダに delay-dif.png という名前で出力します。
    $jpg3 = 'img/delay-dif.png';

  2. グラフキャンパスの大きさ X軸

    X目盛り数は予測値を表示するため、デ-タ数 + 5 とする必要があります。
    表示デ-タ数 $maxN は
    $maxN = $this -> limit;
    ですので、
    $maxN5 = $maxN + 5;
    をX目盛り数とします。

  3. グラフキャンパスの大きさ

    折線、ロ-ソク足 Y軸
    $this -> disp = $delay['y_max'] がロ-ソク足 Y目盛り数最大値となります。

  4. グラフキャンパスの大きさ 横幅

    グラフキャンパスの横幅 $wide は X目盛り数 $maxN により変わります。
    600 or 900 px とします。

      $wide = 600;
      if($maxN > 88){
        $wide = 900;
      }
    	

PHPlot インスタンス作成

  1. インスタンス作成

    $plot = new PHPlot($wide, 400, $jpg3);
    X幅:$wide
    Y幅:400px
    グラフ画像名:$jpg3
    でインスタンスを設定しました。
    そして、ファイル出力できるように
    $plot -> SetIsInline(TRUE);
    とします。

  2. 折線設定

    表示する折線の設定をします。
    $plot -> SetPlotType('lines');
    これで、折線表示設定ができました。
    ラインスタイルを実線に設定します。
    $plot -> SetLineStyles(array(
    "solid","solid","solid","solid"));
    折線の太さを指定します。
    予測終値:太線(3px)
    予測 -σ:細線(1px)
    予測 +σ:細線(1px)
    遅行線 :太線(3px)
    $plot -> SetLineWidths(array("3","1","1","3"));
    そして 遅行スパンクラスファイル作成その6 で作成した折線デ-タ $data_g をインスタンス $plot に設定します。
    $plot -> SetDataValues($data_g);

キャンパス設定

  1. X,Y 軸設定

    X軸の最小値:0
    Y軸の最小値:$this -> y_max -10
    X軸の最大値:$maxN5
    Y軸の最大値:$this -> y_max
    を設定します。
    $plot -> SetPlotAreaWorld(0,$this -> y_max -10, $maxN5, $this -> y_max);

  2. 折線色設定

    折線色を設定します。
    予測終値:黒色
    予測 -σ:黒色
    予測 +σ:黒色
    遅行線 :紫色
    $plot -> SetDataColors(array('black','black','black','purple'));

  3. 目盛り、タイトル表示スペ-ス設定

    X,Y 目盛り、タイトルを表示するスペ-スを作ります。
    左30px,右30px,上30px,下50px のスペ-スを確保しました。
    $plot -> SetMarginsPixels(30, 30, 30, 50);
    //左 右 上 下

  4. フォント設定

    $plot -> SetTTFPath('fonts');
    fonts フォルダにフォントファイルを置けといっていますので
    例えば、本クラスを利用するインスタンス
    $dif = new Delay_dif($delay);
    を作ったファイル abc.php と同じフォルダ delay に
    XAMPP 環境で言うと
    C:\xampp\htdocs\delay\abc.php
    のように置いていたとするとフォントファイル ipaexg.ttf は
    C:\xampp\htdocs\delay\fonts\ipaexg.ttf
    のように設置します。

  5. X,Y 軸フォント設定

    X,Y軸目盛りのフォント及びサイズ設定をします。
    $plot -> SetFontTTF('x_label', 'ipaexg.ttf', 9);
    // x軸目盛り
    $plot -> SetFontTTF('y_label', 'ipaexg.ttf', 9);
    // y軸目盛り

  6. 折線表示

    折線デ-タ $data_g を表示します。
    $plot -> DrawGraph();

ロ-ソク足チャ-ト表示

折線デ-タの表示が終わっていますので、ロ-ソク足チャ-トを表示します。
まずは、タイトル表示をします。
$plot -> SetTitle( )
( )内にタイトルを書くのですが、グラフの幅が、600px の時と 900px の時では 「豪ドル/円 予測」のタイトルの左右の位置が異なりますので
if($maxN > 88){ }
でタイトル文の左右の空白文字数を調整してタイトル文を設定します。

ロ-ソク足デ-タ $data_l 表示

  1. デ-タ $data_l 設定

    $plot->SetDataValues($data_l);

  2. ロ-ソク足宣言

    $plot->SetPlotType('candlesticks2'); ロ-ソク足を表示することを宣言します。

  3. ロ-ソク足色設定

    ロ-ソク足本体と髭をの色をそれぞれ設定します。 価格が上昇している時 → 赤 価格が下降している時 → 濃緑

      
       $plot -> SetDataColors(array(
        'DarkGreen', 'red', 'DarkGreen', 'red'
       ));
      

  4. ロ-ソク足表示

    ロ-ソク足デ-タ $data_l を表示します。
    $plot -> DrawGraph();

コメント表示

PHP 関数 GD のなかの
imageTtfText(
 画像リソ-ス,フォントサイズ,角度,X座標,Y座標,
 文字色,フォント,テキスト文字
);
を使用して、チャ-トの上方右側にこのチャ-トの基本情報を表示します。
まず表示位置(X座標)$posi を決めます。
グラフの幅が600pxの時は向かって左端から420px
幅が 900px の時は720px
の位置からコメント表示を始めます。

 
  if($this -> limit <= 88){
    $posi=420;     
  }else{
    $posi=720;
  }
  

  1. コメント書込用画像読込

    コメントを書込チャ-トグラフ画像を読込みます。
    $jpg4 = imageCreateFromPng('img/delay-dif.png');

  2. 最新日付と初期比較期間

    $text[1] 最新日付+初期比較期間 を用意します。

       $text[1]= 
        mb_substr($newday,2)
        ." 初期比較期間="
        .$this -> dist;
    	
    $newday には 2018/10/22 のようにデ-タが格納されていますので、 mb_substr($newday,2) で頭の 2文字「20」を削除しました。

  3. 最小σ値

    最小σ値 $text[2] を用意します。
    $text[2]="σ = ".round($mi,3);
    round(($mi),3) は PHP 関数で、$miを指定した桁数 3 で四捨五入してくれます。

  4. その他のコメント

    その他の表示したいコメントも$text[3]~[7]に設定します。

      $text[3] =
       "遅行値   =".$mi_j;
      $text[4] =
       "比較期間=".$mi_n ;
      $text[5] =
       "基本Avg =".round($mi_Avg,3);
      $text[6] =
       "Avg_m =".round($mi_Avg_m,3);
      $text[7] =
       "ΔAvg  =   ".round($mi_DA,3);
    
  5. フォント設定

    コメント文字のフォントの置いてあるパスとフォントファイル名を指定します。
    $font = "fonts/ipaexg.ttf";
    文字の色 RGB 指定で 0,0,0 黒色に設定します。
    $text_color = imagecolorallocate($jpg4, 0, 0, 0);

  6. コメント書込

    7つあるコメントをチャ-トに書込ます。 16px ごとに行を下げています。

     for ($i4=1; $i4<8; $i4++){
      imageTtfText(
       $jpg4,10,0,$posi,$i4*16,
       $text_color,$font,$text[$i4]
      );
     }
    
  7. コメント書込済チャ-ト保存、表示

    できあがったチャ-トを img フォルダに delay-dif-t.png の名前で保存、表示し、 画像ファイルを廃棄して終わります。
    Imagepng($jpg4,"img/delay-dif-t.png");
    print("<br><img src = img/delay-dif-t.png>");
    imagedestroy ($jpg4);


これで、遅行スパンクラスファイル作成が完了しました。
長かったです。
後一息です。
引き続き、遅行スパンクラス確認ファイルの作成を続けます。


遅行スパンクラス確認ファイル作成 に進む
遅行スパンクラスファイル作成 その6 に戻る
遅行スパンクラスファイル作成 その5 に戻る
遅行スパンクラスファイル作成 その4 に戻る
遅行スパンクラスファイル作成 その3 に戻る
遅行スパンクラスファイル作成 その2 に戻る
遅行スパンクラスファイル作成 に戻る
遅行スパンクラス概要 に戻る

63PearVillage に戻る