1. 程式人生 > >PHP JpGraph類庫的介紹以及基本用法

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

https://jpgraph.net/download/
我這裡下載的是最新的4.2.6版本 php版本 7.0.12
下載解壓後將解壓檔案中的src移到你的專案中即可(src中Examples有官網提供的非常多的例子,研究這些demo是學習JpGraph最好的途徑)
注意:使用JpGraph需要開啟GD庫
1.折線圖X-Y
折線圖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;