Pear::Image_Graph その4
Image_Graph 問題点対処 PHP ファイル
p_gra-62-xtype-3.php
63Pear Villageに戻る
<?php
include 'Image/Graph.php';
// データ 多重配列
$data = array(
array(10,13,20,15,12,18),//折線A
array( 5, 4, 8,10,17, 5),//折線B
array( 8, 6, 10,12,8, 7),//折線C
array( 0, 0, 0, 0,0, 0),//グリッド用
);
$data_era = array(22, 0, 0, 0, 0,22);//消線
// X軸ラベル
$x = array('1','2','3','4','5','6');
// 線色
$c = array('red','black','green','gray');
//ダミ縦棒線
$Data_era = Image_Graph::factory('dataset');
for ($k=0;$k<count($x);$k++) {
$Data_era ->addPoint($x[$k],$data_era[$k]);
}
/*
Image_Graphオブジェクト作成
第二引数でグラフのサイズを指定
*/
for ($i=0;$i<count($c);$i++) {
$Graph[$i] =
Image_Graph::factory
('graph', array(400, 300));
$Font[$i] = $Graph[$i] ->
addNew('font', 'fonts/ipaexm');
$Graph[$i]->setFont($Font[$i]);
$Plotarea[$i] = $Graph[$i] -> addNew('plotarea');
$Plotarea[$i]->setFillColor('white');
$axis_y[$i] =
$Plotarea[$i]->getAxis('y');//縦軸
$axis_y[$i]->forceMinimum(0);
$axis_y[$i]->forceMaximum(22);
//表示するデータの作成
$Dataset[$i] =
Image_Graph::factory('dataset');
for ($j=0;$j<count($x);$j++) {
$Dataset[$i] ->
addPoint($x[$j],$data[$i][$j]);
}
$Plot[$i] = $Plotarea[$i] ->
addNew('area',array($Dataset[$i]));
$Plot[$i]->setLineColor($c[$i]);
//ダミ縦棒線追加
$Plot[$i] = $Plotarea[$i] ->
addNew('impulse',array($Data_era));
$Plot[$i]->setLineColor('white');
// グリッドの設定
// null はダミ、なんでもいいから入れておく
if ($i == count($c)-1){
$GridY[$i] = $Plotarea[$i] ->
addNew('line_grid',
null, IMAGE_GRAPH_AXIS_Y);
$GridY[$i]->setLineColor('gray@0.2');
}
// グラフの出力
$filename[$i] = 'img/'.$c[$i].'.png';
$Graph[$i]->done(
array(
'filename' => $filename[$i])
);
// echo "<img src = $filename[$i]>";
//画像の白色部分を透過色に設定する
$source_img[$i] =
imageCreateFromPng($filename[$i]);
$white = ImageColorClosest
($source_img[$i], 255, 255, 255);
ImageColorTransparent
($source_img[$i],$white);
}
//表示するグラフの合成
for ($l=1;$l < count($c);$l++) {
imageCopyMerge
($source_img[$l],
$source_img[$l-1], 0, 0, 0, 0, 400,300,100);
//メモリ上の画像データを出力
Imagepng
($source_img[$l], $filename[$l]);
}
//ブラウザに表示
print("<img src = "
.$filename[count($c)-1]
.">");
//メモリを解放
for ($m=0;$m < count($c);$m++) {
imagedestroy($source_img[$m]);
}
?>