PHP利用pChart開源項目生成圖表
pChart是一個開源的圖表生成庫,主要涉及3個Class:pChart.class, pData.class, pCache.class,可生成20多種簡單或復雜的圖表,支持PNG,JPG,GIF通用圖片格式。數據源可以來自于Database,CSV,當然也可以手寫。使用該程序PHP需要開啟GD服務,先來看看pChart的工作流程:
主要分為三步:
- * 讀取用于生成圖表數據(數據庫、文件)
- * 設計圖表樣式(圓角、底色等)
- * 制作標簽、題目、圖例并生成圖表 </ol>
下面看一個簡單的柱狀圖表:
代碼如下:
// Standard inclusions
include("pChart/pData.class");
include("pChart/pChart.class");
// Dataset definition
$DataSet = new pData;
//圖表數據
$DataSet->AddPoint(array(1,4,-3,2,-3,3,2,1,,7,4),"Serie1");
$DataSet->AddPoint(array(3,3,-4,1,-2,2,1,,-1,6,3),"Serie2");
$DataSet->AddPoint(array(4,1,2,-1,-4,-2,3,2,1,2,2),"Serie3");
$DataSet->AddAllSeries();
$DataSet->SetAbsciseLabelSerie();
//數據圖例
$DataSet->SetSerieName("Microsoft","Serie1");
$DataSet->SetSerieName("IBM","Serie2");
$DataSet->SetSerieName("Google","Serie3");
// Initialise the graph
$Test = new pChart(700,230);
//設置圖表尺寸、樣式
$Test->setFontProperties("Fonts/tahoma.ttf",8);
$Test->setGraphArea(50,30,680,200);
$Test->drawFilledRoundedRectangle(7,7,693,223,5,240,240,240);
$Test->drawRoundedRectangle(5,5,695,225,5,230,230,230);
$Test->drawGraphArea(255,255,255,TRUE);
$Test->drawScale($DataSet->GetData(),$DataSet->GetDataDescription(),SCALE_NORMAL,150,150,150,TRUE,,2,TRUE);
$Test->drawGrid(4,TRUE,230,230,230,50);
// Draw the 0 line
$Test->setFontProperties("Fonts/MankSans.ttf",6);
$Test->drawTreshold(,143,55,72,TRUE,TRUE);
// Draw the bar graph
//柱狀圖要使用drawBarGraph()
$Test->drawBarGraph($DataSet->GetData(),$DataSet->GetDataDescription(),TRUE,80);
// Finish the graph
//制作圖例、標題、字體等屬性
$Test->setFontProperties("Fonts/MankSans.ttf",10);
$Test->drawLegend(596,150,$DataSet->GetDataDescription(),255,255,255);
$Test->setFontProperties("Fonts/MankSans.ttf",10);
$Test->drawTitle(50,22,"Example",50,50,50,585);
//生成圖表
$imageFile = "example12.png";
$Test->Render($imageFile);
echo '
$imageFile.'">';?></span></pre>
這個是雷達效果的:

代碼:
// Standard inclusions
include("pChart/pData.class");
include("pChart/pChart.class");
// Dataset definition
$DataSet = new pData;
$DataSet->AddPoint(array("Memory","Disk","Network","Slots","CPU"),"Label");
$DataSet->AddPoint(array(6,4,7,4,5),"Serie1");
$DataSet->AddPoint(array(2,3,5,2,4),"Serie2");
$DataSet->AddSerie("Serie1");
$DataSet->AddSerie("Serie2");
$DataSet->SetAbsciseLabelSerie("Label");
$DataSet->SetSerieName("Reference","Serie1");
$DataSet->SetSerieName("Tested computer","Serie2");
// Initialise the graph
$Test = new pChart(400,400);
$Test->setFontProperties("Fonts/tahoma.ttf",8);
$Test->drawFilledRoundedRectangle(7,7,393,393,5,240,240,240);
$Test->drawRoundedRectangle(5,5,395,395,5,230,230,230);
$Test->setGraphArea(30,30,370,370);
$Test->drawFilledRoundedRectangle(30,30,370,370,5,255,255,255);
$Test->drawRoundedRectangle(30,30,370,370,5,220,220,220);
// Draw the radar graph
//要使用drawRadarAxis()生成雷達效果
$Test->drawRadarAxis($DataSet->GetData(),$DataSet->GetDataDescription(),TRUE,20,120,120,120,230,230,230);
$Test->drawFilledRadar($DataSet->GetData(),$DataSet->GetDataDescription(),50,20);
// Finish the graph
$Test->drawLegend(15,15,$DataSet->GetDataDescription(),255,255,255);
$Test->setFontProperties("Fonts/tahoma.ttf",10);
$Test->drawTitle(,22,"Example",50,50,50,400);
$imageFile = "example8.png";
$Test->Render($imageFile);
echo '
$imageFile.'">';?></span></pre>
再看幾個其他的效果
1,餅圖:

2, 雙座標曲線圖:

3, 層疊柱狀圖:

4, 多圖表:

圖表的種類已經相當豐富了,具體圖表設置請參考
http://pchart.sourceforge.net/documentation.php?topic=pChart
::源代碼下載::
原文鏈接: http://www.cnblogs.com/gnielee/archive/2009/08/06/1540367.html