1 JpGraph简介
JpGraph是开源的PHP统计图表生成库,基于PHP的GD2图形库构建,把生成统计图的相关操作封装,隐藏了部分复杂的操作,使在PHP页面上输出统计图表变得更加容易。
JpGraph的官方网站为:http://www.aditus.nu/jpgraph/index.php,开发者可以在上面免费下载最新版的JpGraph和阅读相关帮助文档或示例程序。
2 JpGraph的配置
在使用JpGraph前,必须对其进行配置,主要有两方面:1、开启GD2图形库;2、配置中文显示。主要步骤如下:
(1)检查PHP是否支持GD库
在php.ini文件中找到语句;extension=php_gd2.dll
把上述语句前的;号去掉,即去掉注释。如果因为PHP版本不同而找不到此语句,则可直接添加extension=php_gd2.dll
(2)由于JpGraph目前仅支持simhei一种中文字体,所以第二步应把simhei.ttf放到如下路径中
windows中:C:\Windows\Fonts\
Linux中:/usr/X11R6/lib/X11/fonts/truetype/
(3)修改文件jpgraph_ttf.inc.php
添加语句:DEFINE("FF_SIMSUN",30); //其中30可以为其他数字,只要不与其他语句重复就可以
(4)修改文件jpg-config.inc.php
找到语句:DEFINE('CHINESE_TTF_FONT','bkai00mp.ttf');
替换为:DEFINE('CHINESE_TTF_FONT','simsun.ttc');
(5)修改文件jpgraph_gb2312.php
找到函数:function gb2utf8($gb)
把函数修改为:
即把gb2编码方式转utf8方式的那段代码注释掉
3 JpGraph的使用
下载JpGraph并解压后,将看到JpGraph库实际上就是众多的PHP文件,他们封装了使用PHP预定义库进行图形生成的复杂操作。其中Examples文件夹里面的是示例程序,JpGraph的相关特性将可以在这些示例中得以体现。其他文件则是JpGraph的库文件,在实际使用JpGraph的过程中需要include或require相应的文件。
以下是一个详细的例子(复制的时候请注意,生成一个ANSI格式)
<?php
//用PHP画折线图
include("jpgraph/jpgraph.php");
include("jpgraph/jpgraph_line.php");
$datay = array(8320,9360,14956,17028,13060); //填充的数据
$graph = new Graph(600,300,"auto"); //生成画布
//设置画布的边距
$graph->img->SetMargin(50,40,30,40);
//设置拆线的平滑状态
$graph->img->SetAntiAliasing();
//设置刻度样式
$graph->SetScale("textlin");
//创建画布阴影
$graph->SetShadow();
//设置标题
$graph->title->Set("《LINUX系统管理员》图书月销售客额折线图");
//设置标题字体
$graph->title->SetFont(FF_SIMSUN,FS_BOLD);
//设置画布的背景颜色为淡蓝色
$graph->SetMarginColor("lightblue");
//设置Y轴标题的字体
$graph->yaxis->title->SetFont(FF_SIMSUN,FS_BOLD);
$graph->xaxis->SetPos("min");
$graph->yaxis->HideZeroLabel();
$graph->ygrid->SetFill(true,'#EFEFEF@0.5','#BBCCFF@0.5');
//设置X轴
$a=array("1月","2月","3月","4月","5月","6月","7月","8月","9月","10月","11月","12月");
$graph->xaxis->SetTickLabels($a);
//设置X坐标轴的字体
$graph->xaxis->SetFont(FF_SIMSUN);
$graph->yscale->SetGrace(20);
//创建折线图对象
$p1 = new LinePlot($datay);
//设置数据坐标点为图形标记
$p1->mark->SetType(MARK_FILLEDCIRCLE);
//设置填充的颜色
$p1->mark->SetFillColor("red");
//设置圆柱形标记的直径为4像素
$p1->mark->SetWidth(4);
//设置拆线颜色为蓝色
$p1->mark->SetColor("blue");
//在X轴的各坐标点中心位置绘制拆线
$p1->SetCenter();
//在统计图上绘制折线
$graph->Add($p1);
//输出图像
$graph->Stroke();
?>