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( 548,10,175),//折線B
  
array( 8610,12,87),//折線C
  
array( 00,  00,00),//グリッド用
 
);
$data_era = array(220000,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(400300));
  
$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',
     
nullIMAGE_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], 255255255);
  
ImageColorTransparent
   
($source_img[$i],$white);
}
//表示するグラフの合成
for ($l=1;$l count($c);$l++) {
  
imageCopyMerge
   
($source_img[$l],
    
$source_img[$l-1], 0000400,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]);
}
?>