这是最后的效果图可以先看一下:
虽然网上有很多教程,但还是写一篇自己的调试经过,加深印象
安装教程:
https://blog.csdn.net/qq_15096707/article/details/48930149
使用教程:
https://blog.csdn.net/liupengcheng201/article/details/44593713
第一步 安装:
1.明确自己的PHP版本,往这个网址(https://jpgraph.net/download/)下载文件,放到项目中
2.将文件下的scr文件重命名为jpgraph
3.查看gd库是否打开:在php的配置文件php.ini文件中查找extension=php_gd2.dll,取消注释
4.检测安装:我直接在网上粘贴了代码放在项目中,图片可以正常显示,表示我的安装没有问题
第二步 使用:
1.路径包含正确
2.中文显示问题,我在查找的过程中,有很多是改源码的,总觉得不靠谱,因为我本身文件是gb2312的后来用的是:
Gpgraph默认显示汉字时是把汉字编码认为gb2312,转化为utf-8以后再显示,如果文件的编码方式是gb2312,只需把SetFont()方法的第一个参数设置为FF_SIMSUN即可
3.我当时做的时候,遇到的一个问题是标题可以正常显示中文,但是横坐标却不行,后来都快绝望了,加了一行
$graph->xaxis->SetFont(FF_SIMSUN,FS_BOLD);
因为当时我只知道title有setfont方法,不知道xaxis也有,设置之后就可以正确显示中文了
4.还有一个问题是,用jpgraph是生成的图片,我需要在页面中显示,页面中还要包括其他的内容
我找了很久,没有好的方法,后来是用的frameset来实现的
这是代码:
//柱状图图片 public function histogramlistAction(){ //包含路径 require_once dirname(dirname(dirname(dirname(__FILE__)))) . '/public/jpgraph-4.2.1/jpgraph/jpgraph.php"'; require_once dirname(dirname(dirname(dirname(__FILE__)))) . '/public/jpgraph-4.2.1/jpgraph/jpgraph_line.php"'; require_once dirname(dirname(dirname(dirname(__FILE__)))) . '/public/jpgraph-4.2.1/jpgraph/jpgraph_error.php"'; require_once dirname(dirname(dirname(dirname(__FILE__)))) . '/public/jpgraph-4.2.1/jpgraph/jpgraph_bar.php"'; //获取数据 $datay=array( $itemInfo->getService_charge(), $infos[0]['money_sums'], 0, $infos[0]['item_bonuss'], $infos[0]['money_sums']+$infos[0]['item_bonuss'], $infos[0]['shares'], $infos[0]['money_sums']+$infos[0]['item_bonuss']+$infos[0]['shares'], $itemInfo->getService_charge()-($infos[0]['money_sums']+$infos[0]['item_bonuss']+$infos[0]['shares']), 0, ); $graph = new Graph(1200,600,'auto'); $graph->SetScale("textlin"); $graph->SetShadow(); $graph->SetMarginColor("yellow"); //设置画布背景色为淡蓝色 $graph->img->SetMargin(200,30,40,40); //横坐标 $datax=array('服务费', '项目人工', '项目报销', '项目奖金', '直接成本', '分摊成本', '总成本', '盈亏', '预期盈亏'); $graph->xaxis->SetTickLabels($datax); $graph->xaxis->SetFont(FF_SIMSUN,FS_BOLD); //标题 $title=$itemInfo->getName()."成本统计柱状图"; $graph->title->Set($title); $graph->title->SetFont(FF_SIMSUN,FS_BOLD); $bplot1 = new BarPlot($datay); $bplot1->SetFillColor("orange"); $bplot1->SetShadow(); $bplot1->SetShadow(); $gbarplot = new GroupBarPlot(array($bplot1)); $gbarplot->SetWidth(0.6); $graph->Add($gbarplot); echo $graph->Stroke(); die; }