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
代码如下:
<?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;