使用PHP生成数据统计图

在THINKPHP3.2环境下,本文以生成柱状图为例子来阐释,其他图同理调用对应方法即可

JpGraph是一个PHP的图形类库,可以方便地生成各种柱状图,饼图,折线图等等,而且还可以方便地加文字.

步骤:

一、下载官方JpGraph插件包   点击下载

二、使用方法

1.下载好后解压,把/src重命名为 /Jpgraph

2.把Jpgraph放入TP3.2框架下的  \ThinkPHP\Library\Vendor


3. 在控制器中调用就好了

  /*** 绘图函数* @param $title ,表格名称* @param $str_x ,横坐标名称* @param $str_y ,纵坐标名称* @param $data2y ,数据的纵坐标 array注意是数组格式* @param $data1y ,数据的横坐标 array注意是数组格式* @param $width ,图长默认500* @param $height ,图宽默认400*/protected function draw_pic($title,$str_x,$str_y,$data2y,$data1y,$width=500,$height=400){// 引入必要的文件,格式:vendor('Jpgraph文件夹.类名')vendor('Jpgraph.jpgraph');   //必须的vendor('Jpgraph.jpgraph_bar');   //依具体情况引入// 新建图表$graph = new \Graph($width,$height); //图片的大小$graph->SetScale("textlin");//参数勿动,设置刻度模式$graph->SetShadow();$graph->img->SetMargin(40,30,20,40);//中间图离表格的距离// 绘制柱状图$b1plot = new \BarPlot($data1y);$b1plot->SetFillColor("red");//柱状图下方颜色$b1plot->value->Show();$b2plot = new \BarPlot($data2y);$b2plot->SetFillColor("blue");//柱状图上方颜色$b2plot->value->Show();// 创建分组的柱状图$gbplot = new \AccBarPlot(array($b1plot,$b2plot));// 将柱状图添加到图表上$graph->Add($gbplot);//其他格式设置$graph->title->Set($title);//图表名称
//            echo $str_x;$str_x=iconv("UTF-8","GB2312//IGNORE",$str_x);$str_y=iconv("UTF-8","GB2312//IGNORE",$str_y);$graph->xaxis->title->Set($str_x);//横坐标名称$graph->yaxis->title->Set($str_y);//纵坐标名称$graph->title->SetFont(FF_FONT1,FS_BOLD);$graph->yaxis->title->SetFont(FF_FONT1,FS_BOLD);$graph->xaxis->title->SetFont(FF_FONT1,FS_BOLD);// 显示图表$graph->Stroke();}
</pre><p></p><p></p><p><img src="" alt="" /><span style="white-space:pre"> 调用上边方法</span></p><pre name="code" class="php">    public function index() {$top_y=array(11,2,1,7);//上半柱状坐标$bottom_y=array(-2,8,9,3);//下半柱状坐标$this->draw_pic('DISC ','X汉字','Y汉字',$top_y,$bottom_y);}

5.打开 index页面,则产生对应图标,效果如下:

-------

双柱的图像

 /*** 绘图函数* @param $data_a ,左柱的值 array注意是数组格式* @param $data1b ,右柱的值 array注意是数组格式* @param $width ,图长默认500* @param $height ,图宽默认400* @param $title ,图表名称,默认为result*/protected function draw_pic($data_a,$data_b,$width=500,$height=400,$title="Result"){// 引入必要的文件vendor('Jpgraph.jpgraph');   //载入基本类vendor('Jpgraph.jpgraph_bar');    //载入柱状图$graph=new \Graph($width,$height); //创建一个图表 指定大小$graph->SetScale("textlin"); //设置坐标刻度类型$graph->img->SetMargin(40,40,30,40);//设置统计图边距 左、右、上、下$graph->SetMarginColor("lightblue");//设置画布背景色 淡蓝色
//        $graph->SetBackgroundImage(TEST_ROOT.'Home/img/gwkj.png',BGIMG_COPY); //设置背景图片
//        $graph->img->SetAngle(45); //设置图形在图像中的角度//设置标题信息$graph->title->Set($title); //设置统计图标题$graph->title->SetFont(FF_SIMSUN,FS_BOLD,20); //设置标题字体$graph->title->SetMargin(5);//设置标题的边距//设置X轴信息$str_x=array('D','I','S','C');//横坐标各个坐标点名称$graph->xaxis->title->Set('(category)'); //标题$graph->xaxis->title->SetFont(FF_SIMSUN,FS_BOLD,10); //标题字体 大小$graph->xaxis->title->SetColor('black');//颜色$graph->xaxis->SetFont(FF_SIMSUN,FS_BOLD,10);//X轴刻度字体 大小$graph->xaxis->SetColor('black');//X轴刻度颜色$graph->xaxis->SetTickLabels($str_x); //设置X轴标记$graph->xaxis->SetLabelAngle(0);//设置X轴的显示值的角度;//设置Y轴的信息$graph->yaxis->SetFont(FF_SIMSUN,FS_BOLD,10);//标题$graph->yaxis->SetColor('black');//颜色$graph->ygrid->SetColor('black@0.9');//X,y交叉表格颜色和透明度 @为程度值$graph->yaxis->scale->SetGrace(0);//设置Y轴显示值柔韧度//设置数据$bplot1 = new \BarPlot($data_a);$bplot2 = new \BarPlot($data_b);//设置柱状图柱颜色和透明度$bplot1->SetFillColor('orange@0.4');$bplot2->SetFillColor('brown@0.4');//设置值显示$bplot1->value->Show(); //显示值$bplot1->value->SetFont(FF_SIMSUN,FS_BOLD,10);//显示字体大小$bplot1->value->SetAngle(90); //显示角度$bplot1->value->SetFormat('%0.2f'); //显示格式 0.2f:精确到小属数点后2位$bplot2->value->Show();$bplot2->value->SetFont(FF_SIMSUN,FS_BOLD,10);$bplot2->value->SetAngle(90);$bplot2->value->SetFormat('%0.0f');//设置图列标签$graph->legend->SetFillColor('lightblue@0.9');//设置图列标签背景颜色和透明度$graph->legend->Pos(0.01,0.12,"right","center");//位置$graph->legend->SetFont(FF_SIMSUN,FS_NORMAL,10);//显示字体 大小$bplot1->SetLegend('A');$bplot2->SetLegend('B');//设置每个柱状图的颜色和阴影透明度$bplot1->SetShadow('black@0.4');$bplot2->SetShadow('black@0.4');//生成图列$gbarplot = new \GroupBarPlot(array($bplot1,$bplot2));$gbarplot->SetWidth(0.5); //柱状的宽度$graph->Add($gbarplot);$graph->Stroke(); //输出图像}

图片出现乱码原因:在绘制图片时,默认会把文字转换成UTF-8,如果默认已经是UTF-8,则是双重UTF8,产生乱码。

解决方法:

 <span style="white-space:pre"> </span>$str_x=iconv("UTF-8","GB2312//IGNORE",$str_x);$str_y=iconv("UTF-8","GB2312//IGNORE",$str_y);

JpGraph生成图表相关推荐

  1. php生成图表_使用PHP组件的4种最佳图表生成选项

    php生成图表 Data is everywhere around us, but it is boring to deal with raw data alone. That's where vis ...

  2. python绘制动态图表怎么存下来_用python如何实现导入excel数据后自动生成图表?python如何实现交互式动态图表?...

    这个需求涉及的环节太多了.导入excel文件,获取数据 -- 需要xlrd模块把数据导入python 2. 设定输出图表类型 -- 需要matplot模块.根据数据复杂度,可能需要ETL,那么需要pa ...

  3. python生成折线图-python 生成图表

    # -*- coding:utf-8 -*- import xlsxwriter # 创建一个excel workbook = xlsxwriter.Workbook("chart_pie. ...

  4. 如何用C#在Excel中生成图表?

    如何用C#在Excel中生成图表? exc.Charts.Add(oMissing,oMissing,1,oMissing);      exc.ActiveChart.ChartType=Excel ...

  5. hcharts生成图表

    借助hcharts插件,可以很方便地在模板页面中生成图表.类似插件还有echarts. 补充... 转载于:https://www.cnblogs.com/Forever77/p/11144346.h ...

  6. pdshell15 设计数据库_使用PowerDesigner 15对现有数据库进行生成图表结构

    一.配置数据库源 1.在对数据库表进行导出生成到PowerDesigner之前,需要对对即将操作的数据库进行配置数据源:启动PowerDesigner 15, 在菜单中选择Database->C ...

  7. Day215.课程详细页面功能完善、Echarts统计分析模块[生成统计数据+生成图表]前后端整合 -谷粒学院

    谷粒学院 课程详细页面功能完善 一.修改课程详细接口 1.在service_order模块添加接口 用于判断订单中status值是否为1,为1则为已支付 @RestController @CrossO ...

  8. app性能数据导出生成图表方法之一

    测试app时,我们需要收集程序运行时的内存与cpu消耗的数据,以此来分析该程序性能消耗是否达到标准,但我们测试时结果文件一般以.txt文档保存,使用Notepad++打开后如下图,这里记录如何将.tx ...

  9. python提取excel前十行生成图_Python读取Excel数据生成图表 v2.0

    Python读取Excel数据生成图表 v2.0 一.需求背景 自己一直在做一个周基金定投模拟,每周需要添加一行数据,并生成图表.以前一直是用Excel实现的.但数据行多后,图表大小调整总是不太方便, ...

最新文章

  1. hdu 5285 二分图黑白染色
  2. 调用远程摄像头进行人脸识别_人脸识别技术植入手机APP
  3. Spring集成:轻量级集成方法
  4. linux7yum安装mysql,CentOS7 使用yum安装mysql
  5. android文件体系,Android文件体系-基础
  6. 筛选出英语与计算机成绩之和,职称计算机和英语考试的成绩什么地方能够查到 – 手机爱问...
  7. SQL 复习二(数据查询语言)
  8. 6.2016年国赛A题“系泊系统的设计”
  9. JDK1.8优雅的集合排序(集合的排序)
  10. python复数什么意思_python 复数是什么意思
  11. Required request body is missing 报错解决
  12. Debian9初始配置
  13. matlab 坐标不用科学计数法,matlab不用科学计数法
  14. java ()括號_Java提取中括號中的內容
  15. 什么?你也被问到JVM了
  16. 文件夹总是在新窗口打开
  17. 如何在网上查阅和免费下载标准-网站推荐
  18. Linux(12)Debain系统安装远程控制软件
  19. ubuntu系统(八):ubuntu18.04双系统安装+ros安装+各种软件安装+深度学习环境配置全家桶
  20. IBM 2022年关于安全的五大预测;美通社推出2022年巴塞罗那世界移动通信大会整合传播方案 | 全球TMT...

热门文章

  1. enscape助手_Enscape助手
  2. 分类变量回归——Probit和Logit(附代码)
  3. 用我的亲身经历来谈谈如何快速学习编程
  4. 整理 H5 meta 标签的详解
  5. MacBook —— 修改host文件
  6. 录ppt的时候录光标_ppt录制旁白后怎么加入鼠标指示
  7. 论文阅读 (68):Self-Contrastive Learning: An Efficient Supervised Contrastive Framework with Single...
  8. 为什么大厂前端监控都在用GIF做埋点?
  9. kafka 消息队列
  10. 量子计算机模拟黑洞纠缠,纠缠的量子比特可以用来探测黑洞吗?