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'>";
?>