PHP使用JpGraph图表库画饼状图,以及解决图表显示为小方块的问题(中文乱码)

  • Post author:
  • Post category:php



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图表库画饼状图,以及解决图表显示的问题就完结了。

最后:在我上面的示例当中,只解决了饼状图的标题中文乱码,我的代码中,把数据放在了一个数组里,实际上要想在图示中使用中文,还需要作进一步的转换,这个也是我目前还没有解决的问题,以后解决了会继续写出来。如果,小伙伴们,有好的解决方法,麻烦在评论里告诉我一下,感激不尽!



版权声明:本文为baidu_38607919原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。