Jpgraph使用demo

<?php

require_once('jpgraph-4.0.2/src/jpgraph.php');

$ac='c';

if($ac=='a'){
/********************條形圖************************/
require_once('jpgraph-4.0.2/src/jpgraph_bar.php');//條形圖的類
//創建圖表數據
$xdata = array('Mousemats', 'Pens', 'T-Shirts', 'Mugs');
$ydata = array(35, 43, 15, 10);

/*創建圖形對象,設置尺寸和背景顏色*/
//設置圖表寬,高,緩存文件名稱
$graph = new Graph(500,400,'auto');
//設置邊距
$graph->img->SetMargin(40,20,20,40);
//刻度類型,設置比例 (X 文本比例、Y 線比例)
$graph->SetScale('textlin');
//設置背景顏色
$graph->SetColor('white');
//設置外邊框背景顏色
$graph->SetmarginColor('darkgray');
//使用背景陰影
$graph->SetShadow();
//設置框架顏色
$graph->SetFrame(true,'black');

/*設置圖形標題*/
//標題文本
$graph->title->Set('Sales figures for march');
//標題顏色
$graph->title->SetColor('white');
//標題字體
$graph->title->SetFont(FF_VERDANA,FS_BOLD,14);

/*構建x軸*/
//軸標題文本
$graph->xaxis->title->Set('Product type');
//軸標題顏色
$graph->xaxis->title->SetColor('black');
//軸標題字體
$graph->xaxis->title->SetFont(FF_VERDANA,FS_BOLD,10);
//設置標誌數據(每個數據的標誌)
$graph->xaxis->SetTickLabels($xdata);
//軸顏色
$graph->xaxis->SetColor('black','white');
//軸字體
$graph->xaxis->SetFont(FF_VERDANA, FS_NORMAL,8);
//隱藏十字叉
$graph->xaxis->HideTicks();

/*構建Y軸*/
//軸標題文本
$graph->yaxis->title->Set('Units Sold');
//軸標題顏色
$graph->yaxis->title->SetColor('black');
//軸標題字體
$graph->yaxis->title->SetFont(FF_VERDANA,FS_BOLD,10);
//軸顏色
$graph->yaxis->SetColor('black','white');
//軸字體
$graph->yaxis->SetFont(FF_VERDANA, FS_NORMAL,8);
//隱藏十字叉
$graph->yaxis->HideTicks();

/*新建BarPlot對象處理圖形中的條狀繪製*/
//傳入數據實例圖表
$bplot = new BarPlot($ydata);
//設置條寬度
$bplot->SetWidth(0.75);
//設置條背景顏色
$bplot->SetFillcolor('darkgray');

/*將條形圖對象添加到圖形對象*/
$graph->Add($bplot);
//發送到瀏覽器
$filename = 'images/'.time().'.png';  
$graph->Stroke($filename);
}

if($ac=='b'){
/********************餅圖***********************/
//圖表主類
require_once('jpgraph-4.0.2/src/jpgraph_pie.php');
require_once('jpgraph-4.0.2/src/jpgraph_pie3d.php');

//創建圖表數據
$xdata = array('Mousemats','Pens','T-Shirts','Mugs');
$ydata = array(35,43,15,10);

/*創建圖形對象*/
//設置圖表寬,高,緩存文件名稱
$graph = new PieGraph(400,200,'auto');
//設置背景顏色
$graph->SetMarginColor('white');
//使用背景投影
$graph->SetShadow();
//設置框架顏色
$graph->SetFrame(true,'black');

/*設置圖形標題*/
$graph->title->Set('March Sales');
//標題顏色
$graph->title->SetColor('black');
//標題字體
$graph->title->SetFont(FF_VERDANA,FS_BOLD,14);

/*創建圖例標識餅圖每部分代表的含義*/
//圖例文本顏色
$graph->legend->SetColor('black');
//圖例背景顏色
$graph->legend->SetFillColor('gray');
//圖例方位
$graph->legend->Pos(0.02,0.86);

/*創建三維餅圖對象*/
//傳入Ydata實例它
$pie = new PiePlot3d($ydata);
//把Xdata傳入圖例中
$pie->SetLegends($xdata);
//設置顏色主題 (earth|pastel|sand|water)
$pie->SetTheme('earth');
//設置相對X軸的中心
$pie->SetCenter(0.36);
//設置餅圖的半徑(單位px)
$pie->SetSize(100);
//設置標題的角度
$pie->SetAngle(30);

/*突出顯示兩個扇形區*/
//分開成多少片
$pie->ExplodeSlice(2);
//另一個分開成多少片
$pie->ExplodeSlice(3);

/*在圖形上每個部分旁顯示標識該部分的百分比*/
//設置字體
$pie->value->SetFont(FF_VERDANA,FS_NORMAL,10);
//字體顏色
$pie->value->SetColor('black');

/*將餅圖對象添加到圖形對象併發送到瀏覽器*/
$graph->Add($pie);
$filename = 'images/'.time().'.png';  
$graph->Stroke($filename);//輸出圖像
//可以輸入文件名創建文件而不輸出
//例:$graph->Stroke('humble_pie.png');
}


if($ac=='c'){
/****************折線圖********************/
require_once('jpgraph-4.0.2/src/jpgraph_line.php'); //LinePlot 類  
$aAxisType = 'intlin'; //第一個int是X軸類型第2個lin是Y軸類型  
$yScaleMin = 0; //Y軸最小值, 如果不需要設置,可以爲空,或者NULL,下同  
$yScaleMax = 11; //Y軸最大值  
$xScaleMin = 1; //X軸最大值  
$xScaleMax = 24; //X軸最大值  
  
$unitType = '月份';  
  
  $chartDataTmpArr = array('1' => '1', '2' => '0', '3' => '4', '4' => '5', '5' => '7', '6' => '8', '7' => '4', '8' => '6', '9' => '8', '10' => '7', '11' => '4', '12' => '5', '13' => '4', '14' => '6', '15' => '4', '16' => '2', '17' => '2', '18' => '2', '19' => '2', '20' => '7', '21' => '6', '22' => '1', '23' => '4', '24' => '4');  
  
$chartDataTmpArr2 = array('1' => '2', '2' => '0', '3' => '2', '4' => '2', '5' => '8', '6' => '9', '7' => '5', '8' => '7', '9' => '9', '10' => '7', '11' => '4', '12' => '7', '13' => '2', '14' => '4', '15' => '5', '16' => '6', '17' => '0', '18' => '3', '19' => '6', '20' => '5', '21' => '8', '22' => '9', '23' => '4', '24' => '4');  
$graph = new Graph($width = 780 , $height = 400); //創建新的Graph對象  
$graph->SetScale($aAxisType, $yScaleMin, $yScaleMax, $xScaleMin, $xScaleMax); //設置刻度模式SetScale($aAxisType,$aYMin=1,$aYMax=1,$aXMin=1,$aXMax=1)  
  
$graph->img->SetMargin(40, 20, 50, 50) ; //設置圖表邊界  
$title = date("Y-m-d H:i:s")."統計圖";  
$graph->title->SetFont(FF_SIMSUN,FS_BOLD); //設置圖表標題的字體類型  
$graph->title->Set(iconv("UTF-8","GB2312//IGNORE",$title));  
$graph->title->SetMargin (20);  
  
$graph->xaxis->title->SetFont(FF_SIMSUN,FS_BOLD);  
$graph->xaxis->title->Set(iconv("UTF-8","GB2312//IGNORE",$unitType));  
$graph->xaxis->title->SetMargin(14);  
  
$graph->legend->SetLineWeight(2); //設置圖例文字的字體   
  
$lineplot = new LinePlot($chartDataTmpArr); //創建要畫的一地條曲線的對象  
$lineplot->SetWeight(2); //曲線的線寬  

$lineplot->SetLegend(iconv("UTF-8","GB2312//IGNORE","進入"));//設置圖例文字  
$graph->legend->Pos( 0.025, 0.08, "right","center" ); //圖例文字框的位置 0.025,0.08 是以右上角爲基準的,0.025是距左右距離,0.08是上下距離。
$graph->legend->SetFont(FF_SIMSUN,FS_BOLD);
$graph->legend->SetLayout('1'); //如果有兩條曲線,他們的圖例文字並排放置。  
$graph->legend->SetFrameWeight(0); //圖例文字外框邊框border設置爲0  
$graph->legend->SetFillColor('#C8C8C8'); //圖例文字框內的填充顏色  
$graph->legend->SetShadow('#C8C8C8', 0); //設置圖例文字框的陰影部分顏色和border  
$lineplot->SetColor("orange"); //設置曲線顏色  
$graph->Add($lineplot); //在統計圖上繪製曲線  
      
$lineplot2 = new LinePlot($chartDataTmpArr2); //創建一條新的曲線對象  
$lineplot2->SetLegend(iconv("UTF-8","GB2312//IGNORE","出去"));  
$lineplot2->SetWeight(2);  
$lineplot2->SetColor("blue");
$graph->legend->SetFont(FF_SIMSUN,FS_BOLD);
$graph->Add($lineplot2);  
  
$filename = 'images/'.time().'.png';  
$graph->Stroke($filename);  
}

wKiom1j4G-WQy0RPAAAuMZlxFYM093.png-wh_50

wKioL1j4G-aAlOFEAACMs1QttVU530.png-wh_50

wKioL1j4G-eg--V-AABoFZvqh2E429.png-wh_50





 引入了文件.
    然後寫數據.



[php] view plain copy print?

  1. $ydata = array(11,3,8,12,5,1,9,13,5,7);  


設置圖表大小.



[php] view plain copy print?

  1. $graph = new Graph(350,250);  


   刻度類型:

[php] view plain copy print?

  1. $graph->SetScale('textlin');  

  比如強制如此設置.



[php] view plain copy print?

  1. $graph->SetScale('textlin',0,200);  




  注入y軸數據,設置顏色.


[php] view plain copy print?

  1. $lineplot=new LinePlot($ydata);  

  2. $lineplot->SetColor('blue');  



設置兩條也是一個道理的.

[php] view plain copy print?

  1. $lineplot=new LinePlot($ydata);  

  2. $lineplot->SetColor('blue');  

  3. $slineplot=new LinePlot($sydata);  

  4. $slineplot->SetColor('red');  

  5.   

  6. $graph->Add($lineplot);  

  7. $graph->Add($slineplot);  


設置圖例:


[php] view plain copy print?

  1. $lineplot->SetLegend('Label 1');  

  2. $slineplot->SetLegend('Label 2');  




解決中文亂碼

取前篇的代碼片斷如下

//設置圖表的標題字體、大小
$graph->title->Set("Accumulated&nbsp;bar&nbsp;plots");
$graph->xaxis->title->Set("X-title");
$graph->yaxis->title->Set("Y-title");

//和上面標題對應,設置標題的字體和大小
$graph->title->SetFont(FF_FONT1,FS_BOLD);
$graph->yaxis->title->SetFont(FF_FONT1,FS_BOLD);
$graph->xaxis->title->SetFont(FF_FONT1,FS_BOLD);

把它改爲

//設置圖表的標題字體、大小
$graph->title->Set(iconv("UTF-8","GB2312//IGNORE","網誌博客信息統計表"));
$graph->xaxis->title->Set(iconv("UTF-8","GB2312//IGNORE","X-標題"));
$graph->yaxis->title->Set(iconv("UTF-8","GB2312//IGNORE","Y-標題"));

//和上面標題對應,設置標題的字體和大小
$graph->title->SetFont(FF_SIMSUN,FS_BOLD);
$graph->yaxis->title->SetFont(FF_SIMSUN,FS_BOLD);
$graph->xaxis->title->SetFont(FF_SIMSUN,FS_BOLD);

使用php函數據中文由UTF-8轉爲GB2312,記住由於iconv本身的一個bug,iconv在轉換字符"—"到gb2312時會出錯,所以在需要轉成的編碼後加上 "//IGNORE" 。

FF_SIMSUN表示中文簡體,對應的字體文件是simsun.ttc,雖然FF_CHINESE和FF_BIG5也表示中文但是它們對應的字體文件是不同的,所以不要弄錯。

當然了,我這裏只介紹了一種方法,還有一種就是修改源碼,但不推薦。因爲我覺得改動源碼可能會給其它地方帶來意想不到的麻煩。


使用JpGraph,要知道其版本、運行服務器以及操作系統的息息,不能張冠李戴,否則麻煩多多。


生成驗證碼

require_once('jpgraph-4.0.2/src/jpgraph_antispam.php');
$spam = new AntiSpam();
$chars = $spam->Rand(4);
$spam->Stroke();
$spam->Set('my_string');//可以自行指定字符串


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章