PHP使用JpGraph图表库画饼状图
第一, 安装JpGraph
JpGraph目前最新版本是v4.2.2,官网下载地址(
点击打开链接
)
下载解压后,可以看见两个文件夹和两个文件,
docs文件夹是使用文档,
src文件夹是源文件,
VERSION是版权声明,
README是类库文件的相关说明
第二,配置
将src文件夹复制到项目目录下,重命名为jpgraph(方便导入时写路径)
注意,使用JpGraph图表库,必须确保php配置文件php.ini中开启了GD库扩展。打开php.ini文件,
将“;extension=php_gb2.dll”前面的那个分号“;”删除。然后重启Apache服务器即可启动GD函数库。
接下来,开始编码,
饼状图代码如下:
<?php
//载入基本类和饼图类
require_once ('jpgraph/jpgraph.php');
require_once ('jpgraph/jpgraph_pie.php');
require_once ('jpgraph/src/jpgraph_pie3d.php');
//初始数据,土豆,番薯,青瓜,西红柿,荷兰豆
$browse = array('Potato','Sweet potato','Cucumis','Tomatoes','Snow pea');
$persent = array(58,18,16,6,2);
//实例化PieGraph对象
$graph = new PieGraph(400,300);
//设置标题
$graph->title->Set(iconv('utf-8', 'GB2312', '农产品市场份额饼状图'));
//设置字体类型为中文黑体
$graph->title->SetFont(FF_SIMSUN,FS_BOLD,18);
//设置标题字体颜色为红色
$graph->title->SetColor("red");
//实例化PiePlot3D对象
$pl = new PiePlot3D($persent);
//设置第二块从饼图中分离出分离出来
$pl->ExplodeSlice(1);
//设置饼图大小
$pl->SetSize(0.4);
//设置饼图中心所在位置
$pl->SetCenter(0.45,0.42);
//设置说明文字
$pl->SetLegends($browse);
//将饼图添加到$graph上
$graph->Add($pl);
//输出
$graph->Stroke();
?>
问题:很多人在使用jpgraph图标库的时候,会碰到中文乱码,有时侯图表显示不出来,只有一个小方块,很可能就与乱码有关,我在解决中文乱码之后图表就成功显示了出来(手动抹泪~,差点被这小方块给整出内伤)。具体原因是jpgraph中文默认为”gb2312″编码格式,程序要转换后再显示。
如果文件编码是”gb2312″时,将SetFont()函数的第一个参数设为FF_SIMSUN即可,
如果文件编码是”utf-8″时,则需要在SetFont()函数之前先用iconv()函数把中文汉字编码转换为”gb312″,
请细心看上面代码的这两行:
//设置标题,用iconv()函数把"utf-8"编码转换为"gb312"
$graph->title->Set(iconv('utf-8', 'GB2312', '农产品市场份额饼状图'));
//设置字体类型为中文黑体
$graph->title->SetFont(FF_SIMSUN,FS_BOLD,18);
至此,使用JpGraph图表库画饼状图,以及解决图表显示的问题就完结了。
最后:在我上面的示例当中,只解决了饼状图的标题中文乱码,我的代码中,把数据放在了一个数组里,实际上要想在图示中使用中文,还需要作进一步的转换,这个也是我目前还没有解决的问题,以后解决了会继续写出来。如果,小伙伴们,有好的解决方法,麻烦在评论里告诉我一下,感激不尽!