PHP JpGraph類庫的介紹以及基本用法
JpGraph是一個面向物件的圖形建立庫,用於PHP5(> = 5.1)和PHP7.0該庫完全用PHP編寫,可以在任何PHP指令碼中使用(支援CGI / APXS / CLI版本的PHP),現在最新的版本是4.2.6( JpGraph 4.x系列支援PHP5(PHP 5.1.0或更高版本)和PHP 7(PHP 7.0,7.1和7.2))
JpGraph能做什麼呢?
以前用PHP作圖時我們是使用PHP內建GD庫用來畫圖操作圖片,但是它提供的函式太多難記,不好操作,需要掌握複雜抽象的畫圖函式,或者藉助一些網上下載的畫柱形圖、餅形圖的類來實現,而JpGraph圖表類庫的出現,它使得作圖變成了一件非常簡單的事情,你只需從資料庫中取出相關資料,定義標題,圖表型別,然後的事情就交給JpGraph,只需掌握為數不多的JpGraph內建函式,就可以畫出非常炫目的圖表,比如經常用到的折線圖,柱狀圖,餅狀圖等
這裡我通過幾個常見的例子來介紹一下JpGraph的基本使用
首先去官網下載JpGraph
我這裡下載的是最新的4.2.6版本 php版本 7.0.12
下載解壓後將解壓檔案中的src移到你的專案中即可(src中Examples有官網提供的非常多的例子,研究這些demo是學習JpGraph最好的途徑)
注意:使用JpGraph需要開啟GD庫
1.折線圖X-Y
程式碼如下:
<?php //引入類庫 require_once "./src/jpgraph.php"; //核心檔案 require_once "./src/jpgraph_line.php"; $data =array(0=>3,1=>12,2=>18,3=>30,4=>28,5=>33,6=>43,7=>39,8=>36,9=>29,10=>15,11=>10); //得到Graph物件 weight height $graph=new Graph(600,400); /* int 整數 text 文字 lin直線 log 對數 textint 指橫座標文字 縱座標整數 */ //設定橫縱座標刻度樣式 //SetScale($aAxisType,$aYMin=1,$aYMax=1,$aXMin=1,$aXMax=1) 設定X和Y軸樣式及Y軸的最小值最大值,X軸最小值最大值 $aAxisType = 'textint'; $graph->SetScale($aAxisType); //設定統計圖示題 $graph->title->Set('this is a test'); //得到LinePlot物件 $linePlot = new LinePlot($data); //設定圖例 $linePlot->SetLegend('tuli'); //將統計圖新增到畫布上 $graph->Add($linePlot); //設定統計圖的顏色,一定要在新增到畫布之後再設定 $linePlot->SetColor('red'); //輸出 $graph->Stroke(); //儲存畫布 //$graph->Stroke('./test.png');
2.餅狀圖
程式碼如下:
<?php require_once "../src/jpgraph.php"; require_once "../src/jpgraph_pie.php"; //模擬資料 $data=array(0=>3.5,1=>4.6,2=>9.1,3=>21.9,4=>42.3,5=>90.7,6=>183.5,7=>127.5,8=>61.4,9=>33.5,10=>11.5,11=>4.4); //建立畫布 $graph=new PieGraph(800,500); //設定影象邊界範圍 $graph->img->SetMargin(30,30,80,30); //設定標題 $graph->title->Set("PiePlot Test"); //得到餅圖物件 $piePlot=new PiePlot($data); //設定圖例 $piePlot->SetLegends(array(1,2,3,4,5,6,7,8,9,10,11,12)); //設定圖例位置 $graph->legend->Pos(0.01,0.45,"left","top"); //新增到畫布中 $graph->Add($piePlot); //輸出畫布 $graph->Stroke();
中文亂碼如何解決?
1.支援標題中文
修改jpgraph_ttf.inc.php
搜尋CHINE_TTF_FONT選項,修改常量的值使支援中文的字型
define('CHINESE_TTF_FONT', 'SIMYOU.TTF');
設定標題前,加上這段程式碼
$graph->title->SetFont(FF_CHINESE);
2.支援圖例中文
修改jpgraph_legend.inc.php,將$font_family修改成FF_CHINESE
public $font_family=FF_DEFAULT,$font_style=FS_NORMAL,$font_size=8;