Pear::Image_Graph

Image_Graph 汎用 PHP ファイル
p_gra_62.php


63Pear Villageに戻る

<?php
 include 'Image/Graph.php';
 
// データ 多重連想配列
$data = array(
  array(10,13,20,15,12,18),//予測-1
  array( 5, 4, 8,10, 9, 5),//予測-2
  array(22, 0, 0, 0, 0,22),//消線
  array(12,11,19,14,15,14),//実績-1
  array( 5, 3, 9,7.5,8, 4) //実績-2
 );

// X軸ラベル
$x = array
 ('1','2','3','4','5','6');

// 凡例
$l = array(
 '予測-1','予測-2',' ',
 '実績-1','実績-2'); 
// 線色
$c = array(
 'red','black','white',
 'red','black');

$aib = array(
 'area','area','impulse',
 'impulse','bar');
 
/*
 Image_Graphオブジェクト作成
 第二引数でグラフのサイズと画像書式 png
 を指定
*/
$Graph = Image_Graph::factory
 ('graph', array(400, 300));

/*
 キャンバスにフォントを設定
 http://ipafont.ipa.go.jp/node26#ja
 に行き
 IPAex明朝 (Ver.003.01)
 ipaexm00301.zip(5.42MB)
 をダウンロ-ド解凍後
 fonts フォルダに置く
*/
$Font =
 $Graph->addNew
  ('font', 'fonts/ipaexm');
/*
 又は
 $Font = $Graph -> addNew
  ('font', './fonts/ipaexm.ttf');
 日本語を含むフォントを指定
 .ttf は省略可
*/
// フォントを適用
$Graph->setFont($Font);

$Graph->add(
 Image_Graph::vertical(
  Image_Graph::factory(
   'title',array(
    'サンプルグラフ表示',12)),
   Image_Graph::vertical(
    $Legend =
    Image_Graph::factory('legend'),
    $Plotarea =
     Image_Graph::factory
      ('plotarea'),
    8 // 凡例の割合
  ),6 // タイトルの割合
 )
);
$Legend->setPlotarea($Plotarea);

$fillColor =
 Image_Graph::factory
  ('Image_Graph_Fill_Array');

/*
 背景色設定(色@透明度)
 $Plotarea ->
  setFillColor('blue@0.1');
*/
$Plotarea->setFillColor('blue@0');
/*
 設定を省略すると黒くなる。
 値を小さくすること。

 軸のオブジェクトは、プロットエリアから
 取得できます。
 今回 X 軸の設定はなし
 $axis_x = $Plotarea->getAxis('x');
 //横軸
 $axis_x->forceMinimum(0);
 $axis_x->forceMaximum(30); 
*/ 
$axis_y = $Plotarea->getAxis('y');
//縦軸
$axis_y->forceMinimum(2);
$axis_y->forceMaximum(22);

//表示するデータの作成
for ($i=0;$i < count($l);$i++) {
 $Dataset[$i] =
  Image_Graph::factory('dataset');
 for($n = 0; $n < count($data[$i]);
   $n++)
  {
  $Dataset[$i] -> 
   addPoint($x[$n],$data[$i][$n]);
 }
 $Dataset[$i]->setName($l[$i]);
 $Plot = $Plotarea-> addNew
  ($aib[$i],array($Dataset[$i]));
 $Plot->setLineColor($c[$i]);
 if ($aib[$i]=='bar'){
  $fillColor->addColor('black');
  $Plot->setFillStyle($fillColor);
  $Plot->setSpacing(59);
 }
}

/*
 グリッドの設定
 $GridX = $Plotarea -> addNew(
 'line_grid',null,
  IMAGE_GRAPH_AXIS_X);
 null はダミなんでもいいから入れておく
 $GridX->setLineColor('gray@0.3');
*/ 
$GridY = $Plotarea -> addNew(
 'line_grid', null,
  IMAGE_GRAPH_AXIS_Y);
$GridY->setLineColor('gray@0.3');
/*
 プロットエリアのパディング
 結構使える
 左の余白指定
 $Plotarea ->
  setAxisPadding(20, 'left');
 $Plotarea ->
  setAxisPadding(10, 'top');
 $Plotarea ->
  setAxisPadding(10, 'right');
 $Plotarea ->
  setAxisPadding(10, 'bottom');

 プロット領域を塗りつぶしておく
 余り利用価値はない
 今回使用しない
// グラフの出力
 $Plot ->
  setBackGroundColor('green');

 画面に出力
 $Graph->done();
*/
$filename = 'img/p_gra-620.png';
$Graph ->
 done(array
  ('filename' => $filename));
echo
 "<img src = 'img/p_gra-620.png'>";
?>