相信很多新手和我一样,在thinkphp里面使用jpgraph的时候,会遇到一些问题,如控制器里面直接嵌套jpgraph的代码,在php文件使用jpgraph嵌套html代码,不知道怎么输出到模板,不知道怎么在模板里面引用生成的统计图片,不知道怎么通过从数据库查出数据生成统计图等。
在这里我说一下我的做法
首先在控制器里构造数据
$data="12|16|13|20|15";//构造数据
$this->assign("data",$data);
$this->display('content3');
此处的数据可从数据库里面读出。
然后在html模板里面引用,注意是用img。
<img src='__PUBLIC__/conf/file.php?data=<{$data}>'/>
在图片里面将数据传入名为file.php的文件里面(路径自选)。
include ("../jpgraph/jpgraph.php");
include ("../jpgraph/jpgraph_bar.php");
$data=$_GET['data'];
$datas=explode("|",$data);
$group=array('一月','二月','三月','四月','五月');
$graph = new Graph(400,300); //创建新的Graph对象
$graph->SetScale("textlin");
$graph->SetShadow(); //设置阴影
$graph->img->SetMargin(40,50,40,50);
$graph->legend->SetFont(FF_SIMSUN,FS_BOLD); //此处设置防止中文注释乱码
$barplot=new BarPlot($datas); //创建新的BarPlot对象
$barplot->SetFillColor('orange');
$barplot->SetShadow('[email protected]'); //设置阴影
$barplot->value->Show(); //填充颜色
$barplot->SetLegend("人数"); //设置注释
$barplot->SetWidth(0.8); //设置柱状图宽度
$graph->Add($barplot); //将柱形图添加到图像中
$graph->title->Set("统计分析"); //设置标题和X-Y轴标题
$graph->title->SetColor("red");
$graph->title->SetMargin(10);
$graph->xaxis->title->Set("分组");
$graph->xaxis->title->SetMargin(5);
$graph->xaxis->SetTickLabels($group);
$graph->yaxis->title->Set("数值");
$graph->title->SetFont(FF_SIMSUN,FS_BOLD); //设置标题字体
$graph->yaxis->title->SetFont(FF_SIMSUN,FS_BOLD);
$graph->xaxis->title->SetFont(FF_SIMSUN,FS_BOLD);
$graph->xaxis->SetFont(FF_SIMSUN,FS_BOLD);
$graph->Stroke();
在里面用$_GET获取数据,生成统计图
访问控制器得出如下结果
再次强调几个易错点
1.不要在控制器里面引用jpgraph
2.在模板里面用img应用php文件
3.在php文件里面获取数据,应该jpgraph,此处不得嵌套任何html代码或类似echo,print_r 等php语句,不然会出现乱码