Pear::Image_Graph

Image_Graph 基本 PHP ファイル
p_gra_54.php


63Pear Villageに戻る

<?php
include 'Image/Graph.php';
/*
 Image_Graphオブジェクト作成
 第二引数でグラフのサイズと画像書式 png
 を指定
*/
$Graph = Image_Graph::factory
 ('graph', array(400, 300));
/*
$Graph = Image_Graph::factory
 ('graph', array(array(
  'width' => 400, 'height' => 300,
  'canvas' => 'png')));
*/
/*
 キャンバスにフォントを設定
 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);

//表示するデータの作成 
$Dataset[0] =
 Image_Graph::factory('dataset');
 $Dataset[0]->addPoint('1', 10);
 $Dataset[0]->addPoint('2', 13);
 $Dataset[0]->addPoint('3', 20);
 $Dataset[0]->addPoint('4', 15);
 $Dataset[0]->addPoint('5', 12);
 $Dataset[0]->addPoint('6', 18);
 
 $Dataset[0]->setName('予測-1');
$Plot = $Plotarea->addNew
 ('area', array($Dataset[0]));
$Plot->setLineColor('red');
/*
 プロット領域を塗りつぶしておく
 余り利用価値はない
 今回使用しない
 $Plot ->
  setBackGroundColor('green');
*/
//////////
$Dataset[1] =
 Image_Graph::factory('dataset');
 $Dataset[1]->addPoint('1', 5);
 $Dataset[1]->addPoint('2', 4);
 $Dataset[1]->addPoint('3', 8);
 $Dataset[1]->addPoint('4', 10);
 $Dataset[1]->addPoint('5', 9);
 $Dataset[1]->addPoint('6', 5);
 
 $Dataset[1]->setName('予測-2');
$Plot = $Plotarea->addNew
  ('area', array($Dataset[1]));
$Plot->setLineColor('black');
////////////
$Dataset[2] =
 Image_Graph::factory('dataset');
 $Dataset[2]->addPoint('1', 22);
 $Dataset[2]->addPoint('6', 22);
 
 $Dataset[2]->setName(' ');
$Plot = $Plotarea->addNew
  ('impulse', array($Dataset[2]));
$Plot->setLineColor('white');
//////////////
$Dataset[3] =
 Image_Graph::factory('dataset');
 $Dataset[3]->addPoint('1', 12);
 $Dataset[3]->addPoint('2', 11);
 $Dataset[3]->addPoint('3', 19);
 $Dataset[3]->addPoint('4', 14);
 $Dataset[3]->addPoint('5', 15);
 $Dataset[3]->addPoint('6', 14);
 
 $Dataset[3]->setName('実績-1');
$Plot = $Plotarea->addNew
  ('impulse', array($Dataset[3]));
$Plot->setLineColor('red');
//////////////
$Dataset[4] =
 Image_Graph::factory('dataset');
 $Dataset[4]->addPoint('1', 5);
 $Dataset[4]->addPoint('2', 3);
 $Dataset[4]->addPoint('3', 9);
 $Dataset[4]->addPoint('4', 7.5);
 $Dataset[4]->addPoint('5', 8);
 $Dataset[4]->addPoint('6', 4);
 
 $Dataset[4]->setName('実績-2');
$Plot = $Plotarea->addNew
('bar', array($Dataset[4]));
$Plot->setLineColor('black');
$fillColor->addColor('black');
$Plot->setFillStyle($fillColor);
$Plot->setSpacing(59);
/*
 プロットを行う。
 area のところを他のグラフの名前に
 変えることで出力されるグラフが変わる。
 例)line,area,bar,pie,radar,step,
     impulse,dot,scatter,
     smooth_line,smooty_area
 $Plot = $Plotarea ->
  addNew('smooth_area', $Dataset);
 ところが line系はどういう訳か現在は
 うまく動かない、昔は動いていたようだ
 $Plot = $Plotarea -> 
  addNew('line', array($Dataset));
 はダメ。 
*/
/* グリッドの設定
 $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');

 画面に出力
 $Graph->done();
*/
// グラフの出力
$filename = 'img/p_gra-540.png';
$Graph->done(
  array(
    'filename' => $filename,
  )
);
echo
 "<img src = 'img/p_gra-540.png'>";

?>