pChart是一個開源的圖表生成庫,主要涉及3個Class:pChart.class, pData.class, pCache.class,可生成20多種簡單或復雜的圖表,支持PNG,JPG,GIF通用圖片格式。數據源可以來自於Database,CSV,當然也可以手寫。使用該程序PHP需要開啟GD服務,先來看看pChart的工作流程:
主要分為三步:
下面看一個簡單的柱狀圖表:
代碼如下:
<?PHP // 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,0,7,4),"SerIE1"); $DataSet->AddPoint(array(3,3,-4,1,-2,2,1,0,-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,0,2,TRUE); $Test->drawGrid(4,TRUE,230,230,230,50); // Draw the 0 line $Test->setFontPropertIEs("Fonts/MankSans.ttf",6); $Test->drawTreshold(0,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 '<img src="'.$imageFile.'">'; ?>
這個是雷達效果的:
代碼:
<?PHP // 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(0,22,"Example",50,50,50,400); $imageFile = "example8.png"; $Test->Render($imageFile); echo '<img src="'.$imageFile.'">'; ?>
再看幾個其他的效果
1,餅圖:
2, 雙座標曲線圖:
3, 層疊柱狀圖:
4, 多圖表: