三個PHP圖表類庫

  Jpgraph
1.1   介紹
超字了...
1.3   實例介紹
只要把example中的require_once路徑改了就放進來用吧,我下的是最新版的jpgraph-3.5.0b1,反正測試嘛,我記得跟3.0.7仍是有差異的,把文件名都從新命名過了,這個不錯,原先都是example1~n,都不知道是個什麼東西。好吧隨便打開第一個文件accbarex1.php,是個柱狀圖BarPlot,還有其餘LinePlot線性圖,PiePlot餅狀圖等。代碼很簡單,傳遞數據->設置圖的屬性->設置圖的節點屬性->畫圖設置圖的標題、字體、顏色等->展現,具體能夠看下面的代碼。就是中文有點糾結的,這個不是他的錯,是咱們的GD庫編譯的時候有問題,因此這裏我把文字轉爲html實體展現。很簡單吧,能夠嘗試下玩玩。  
<?php // content="text/plain; charset=utf-8"
require_once ('../jpgraph.php');
require_once ('../jpgraph_bar.php');
 
$data1y=array(-8,8,9,3,5,3);  //blue 那條的數據
$data2y=array(18,20,16,10,5,6); //orange 那條的數據
 
// Create the graph. These two calls are always required
$graph = new Graph(800,500);  // 大小 *
$graph->SetScale("textlin"); // 設置刻度模式 還有 intint linlin log lin textlog 等其餘模式
 
$graph->SetShadow(); 
$graph->img->SetMargin(40,30,20,40); // 設置圖表邊距,就跟 css margin 屬性是同樣的
 
// Create the bar plots
$b1plot = new BarPlot($data1y);  // 建立新的 BarPlot 對象 各類不一樣圖表就是經過調用不通對象實現的 ,BarPlot 就是柱狀的,還有 LinePlot 線性圖 ,PiePlot 餅狀圖
$b1plot->SetFillColor("orange"); // 設置圖的顏色
$b1plot->value->Show();          // 展現
$b2plot = new BarPlot($data2y);  // 同樣的
$b2plot->SetFillColor("blue");
$b2plot->value->Show();
 
// Create the grouped bar plot
$gbplot = new AccBarPlot(array($b1plot,$b2plot)); // 開始畫圖了
 
$graph->Add($gbplot);  // 在統計圖上繪製曲線
 
$graph->title->Set(iconv_arr("Phpwind 圖表測試 "));  // 設置圖表標題 這裏 iconv_arr 是我本身加的,爲了支持咱們偉大的中文要把你的當前編碼轉化爲 html 實體
$graph->xaxis->title->Set(iconv_arr(" 這個大概是月份吧 ")); // 設置 X 軸標題
$graph->yaxis->title->Set(iconv_arr(" 這個是 Y ")); // 設置 Y 軸標題
$graph->title->SetFont(FF_SIMSUN,FS_BOLD);  // 設置標題字體,這裏字體默認是 FF_FONT1 ,爲了中文換成 FF_SIMSUN
$graph->yaxis->title->SetFont(FF_SIMSUN,FS_BOLD); // 設置 X 軸標題字體
$graph->xaxis->title->SetFont(FF_SIMSUN,FS_BOLD); // 設置 Y 軸標題字體
 
$graph->Stroke();  // 輸出圖像
 
function iconv_arr($data){
         if(is_array($data)){
            foreach($data as $k=>$v){
                   $data[$k] = iconv_arr($v);
            }
         }else{
            $data = mb_convert_encoding($data, "html-entities","gbk" );
         }
         return $data;
}
 
 鍥?
pChart
2.1 介紹
超字了...
2.3實例介紹
         一樣拿個實例介紹下,我用的是最新版的pChart 1.27哦,pChart的工做流程主要分爲如下幾步:
(1)     讀取用於生成圖表數據(數據庫、文件)
(2) 設計圖形
(3) 把數據導入圖形
(4) 配置圖形、文字樣式
(5) 成功圖形
一樣pChart也是須要GD庫支持的,因此中文亂碼問題也是存在的,這邊仍是用上面那種方法解決哦,剛用Jpgraph畫過一個柱形圖,那如今搞一個餅圖玩玩吧。
 
<?php
 include("pChart/pData.class"); //數據類
 include("pChart/pChart.class"); //畫圖類
 
//準備好畫圖的數據
$arr1 = array(15,8,3,2,1); // 對應數據
$arr2 = iconv_arr(array('B2B','淘寶','支付寶','阿里雲','其餘')); //數據的文字,和數據位置對應,這裏也用了iconv_arr轉換中文
 
//第一步 得到餅圖數據
$data = new pdata;     
$data->AddPoint($arr1,"serie1"); //裝入數據並命名爲serie1
$data->AddPoint($arr2,"serie2"); //裝入說明並命名爲serie2
$data->AddAllSeries();          //提交數據
$data->SetAbsciseLabelSerie("serie2");   //設置標籤
 
//第二步 畫圖形框架
$im = new pchart(400,300); //創造一個畫布並賦予尺寸
$im->drawFilledRoundedRectangle(7,7,413,243,5,240,240,240); //畫一個圓角矩形(x1,y1,x2,y2,圓角半徑,R,G,B)
$im->drawRoundedRectangle(5,5,415,245,5,230,230,230); //畫圓角矩形""
 
//第三步 把數據導入畫好的圖形內
$im->setFontProperties("Fonts/simhei.ttf",8); //設置字體及大小,須要把字體拷到Fonts文件夾下,或者windos指定到c/system32/fonts
 
//畫一個3維餅圖專用函數
//$data,餅圖結構數據
//$data數據參數
//$XPos,圓心的X座標
//$YPos,圓心的Y座標
//$Radius=100,半徑
//$DrawLabels=PIE_NOLABEL,標籤樣式(百分比和標籤)
//$EnhanceColors=false, 邊框渲染
//$Skew=50,傾斜角度
//$SpliceHeight=20,餅的厚度
//$SpliceDistance=5,各板塊間距離
//$Decimals=2 顯示百分比小數位數
$im->drawPieGraph($data->GetData(),$data->GetDataDescription(),180,130,110,PIE_PERCENTAGE_LABEL,false,50,20,5,2);
 
//餅圖的標籤列表(從左至右順序)
//$XPos,標籤框左上角的X座標
//$YPos,標籤框左上角的Y座標
//$data數據參數
//$R,$G,$B 背景顏色
$im->drawPieLegend(330,15,$data->GetData(),$data->GetDataDescription(),250,250,250);
 
//第四步 製做圖表標題和一些樣式
$im->setFontProperties("Fonts/simhei.ttf",12);
//寫入標題的函數
//$XPos,標籤框左上角的X座標
//$YPos,標籤框左上角的Y座標
//$Value,標題文字內容
//$R,$G,$B,文字顏色
//$XPos2=-1,$YPos2=-1,座標調整的設置
//$Shadow=FALSE 陰影開關
$im->drawTitle(20,30,iconv_arr('阿里集團人員分佈'),100,100,100,-1,-1,false);
 
//第五步 輸出保存圖形
$im->Render("test.png");//保存爲一個圖形文件
 
function iconv_arr($data){
         if(is_array($data)){
            foreach($data as $k=>$v){
                   $data[$k] = iconv_arr($v);
            }
         }else{
            $data = mb_convert_encoding($data, "html-entities","gbk" );
         }
         return $data;
}
 
鍥?
 
還有幾個方法ImportFromCSVcsv文件導入,loadColorPalettetxt文件讀取,仍是很給力的吧,快本身試試吧。
 
phplot
超字了...
3.3實例介紹
         phplot的工做流程也是差很少的,這裏就寫一個線性圖來玩玩吧。具體請看代碼,比較簡單,寫了詳細說明的。
 
<?php
require_once 'phplot.php';
//設置數據
$data = array(
  array('2010',  10,  2),
  array('2011',  15,  8),
  array('2012',  20,   14),
  array('2013',  25,   24),
  array('2014',  30,   35),
  array('2015',  35,   45),
  array('2016',  40,   60)
);
 
$p = new PHPlot(600, 300);
 
$p->SetDefaultTTFont('Fonts/simhei.ttf'); //設置字體,仍是支持中文的吧
$p->SetTitle(iconv_arr('Phpwind疾風學院男女人數比例')); //設置標題,仍是用iconv_arr來解決中文
 
# Select the data array representation and store the data:
$p->SetDataType('text-data'); //設置使用的數據類型,在這個裏面可使用多種類型。
$p->SetDataValues($data); //把一個數組$data賦給類的一個變量$this->data_values.要開始做圖以前調用。
$p->SetPlotType('lines'); //選擇圖表類型爲線性.能夠是bars,lines,linepoints,area,points,pie等。
 
$p->SetPlotAreaWorld(0, 0, 7, 100);  //設置圖表邊距
 
# Select an overall p_w_picpath background color and another color under the plot:
$p->SetBackgroundColor('#ffffcc'); //設置整個圖象的背景顏色。
$p->SetDrawPlotAreaBackground(True); //設置節點區域的背景
$p->SetPlotBgColor('#ffffff'); //設置使用SetPlotAreaPixels()函數設定的區域的顏色。
$p->SetLineWidth(3);  //線條寬度
# Draw lines on all 4 sides of the plot:
$p->SetPlotBorderType('full');  //設置線條類型
 
# Set a 3 line legend, and position it in the upper left corner:
$p->SetLegend(iconv_arr(array('男生人數', '女生人數'))); //顯示在一個圖列框中的說明
$p->SetLegendWorld(0.3, 95); //設定這個文本框位置
 
# Generate and output the graph now:
$p->DrawGraph();
 
function iconv_arr($data){
         if(is_array($data)){
            foreach($data as $k=>$v){
                   $data[$k] = iconv_arr($v);
            }
         }else{
            $data = mb_convert_encoding($data, "html-entities","gbk" );
         }
         return $data;
}
 鍥?
這三個是PHP圖表類庫,對於一些須要交互的圖表(好比須要點擊某個節點顯示大圖)仍是不能知足需求,只能用highchartsflotopen-flash-chart這種jsflash圖表工具來處理。
相關文章
相關標籤/搜索