php 生成饼状图,折线图,条形图 通用类
生成饼状图,折线图,条形图通用的php类,这里使用的是百度 Echart。
Echart 官方网站 http://echarts.baidu.com/
- <?php
- class Echarts
- {
- /**
- * 返回渲染图表Js代码
- * @param $id dom元素id
- * @param array $data 图表数据Data
- * @param $type 图表类型 饼图: pie 条形图:bar 条形图: line
- * @param string $mainTitle 主要标题
- * @param string $subTitle 副标题
- * @param string $yUnit y轴单位
- *@param string $color 颜色 $color="['orange','green','pink']";
- * @return string
- */
- public static function getEcharts($id, array $data, $type, $mainTitle = '', $subTitle = '', $yUnit = '',$color="")
- {
- $xaxis = "";
- $series = "";
- if (empty($data)) {
- $data = array(
- 'legend' => array(
- 'data' => array('-')
- ),
- 'xaxis' => array(
- 'type' => 'category',
- 'boundaryGap' => 'false',
- 'data' => array('')
- ),
- 'series' => array(
- array(
- 'name' => '-',
- 'type' => 'line',
- 'itemStyle' => "{normal: {areaStyle: {type: 'default'}}}",
- 'data' => array()
- ),
- )
- );
- }
- foreach ($data as $key => $value) {
- switch ($key) {
- case 'legend':
- $legend = '[';
- foreach ($value as $k => $v) {
- // data:['直接访问','邮件营销','联盟广告','视频广告','搜索引擎']
- $legend = $legend . json_encode($v, JSON_UNESCAPED_UNICODE) . ',';
- }
- $legend = $legend . ']';
- break;
- case 'xaxis':
- foreach ($value as $k => $v) {
- switch ($k) {
- case 'type':
- $xaxis[] = $k . ":'" . $v . "'";
- break;
- case 'boundaryGap':
- $xaxis[] = $k . ':' . $v;
- break;
- case 'data':
- $xaxis[] = $k . ':' . json_encode($v, JSON_UNESCAPED_UNICODE);
- break;
- }
- }
- $xaxis = '{' . implode(', ', $xaxis) . '}';
- break;
- case 'series':
- foreach ($value as $list) {
- $tmp = array();
- foreach ($list as $k => $v) {
- switch ($k) {
- case 'name':
- case 'radius':
- case 'type':
- $tmp[] = $k . ":'" . $v . "'";
- break;
- case 'center':
- $tmp[] = $k . ":".$v;
- break;
- case 'itemStyle':
- $tmp[] = $k . ':' . $v;
- break;
- case 'data':
- $tmp[] = $k . ':' . json_encode($v, JSON_UNESCAPED_UNICODE);
- }
- }
- $series[] = '{' . implode(', ', $tmp) . '}';
- }
- $series = implode(', ', $series);
- break;
- }
- }
- if ($type == 'pie') {
- $xyAxis = '';
- $tooltip="trigger: 'item',formatter: '{a} <br/>{b}:{c} ({d}%)'";
- } else {
- $xyAxis = 'xAxis :[' . $xaxis . '],';
- $xyAxis = $xyAxis . "yAxis : [{type : 'value', axisLabel : {formatter: '{value}$yUnit'}}],";
- $tooltip="trigger: 'axis'";
- }
- if($color!="")
- {
- $color='color:'.$color.',';
- }
- $script = <<<EOT
- // 路径配置
- require.config({
- paths: {
- echarts: 'http://echarts.baidu.com/build/dist'
- }
- });
- // 按需加载所需图表
- require(
- [
- 'echarts',
- 'echarts/chart/bar', //按需加载条形图
- 'echarts/chart/line', //按需加载折线图
- 'echarts/chart/funnel',
- 'echarts/chart/pie', //按需要加载饼图
- 'echarts/chart/gauge',
- 'echarts/chart/map',
- ],
- function(ec) {
- var myChart = ec.init(document.getElementById('$id'));
- var option = {
- $color
- title : {
- text:'$mainTitle',
- subtext: '$subTitle',
- x:'center'
- },
- tooltip : {
- $tooltip
- },
- legend: {
- orient: 'vertical',
- x: 'left',
- data: $legend
- },
- toolbox: {
- show : false,
- feature : {
- mark : false,
- dataView: { show: true, readOnly: false },
- magicType:['line', 'bar','pie','gauge'],
- restore : true
- }
- },
- calculable : true,
- $xyAxis
- series : [$series]
- };
- myChart.setOption(option);
- }
- );
- EOT;
- return $script;
- }
- }
如何使用,php后台调用方法
- // 饼形图模拟数据
- $optionPie = array(
- "legend" => array("未参加活动", "参与活动未回答问卷", "参与活动并回答问卷"),
- "series" => array(
- array(
- "name" =>"会员活动详情",
- "type" =>"pie",
- "radius"=>"50%",
- "center"=>"['50%', '50%']",
- "data" => $data, //这是一个二维数组
- "itemStyle"=>"{normal:{label:{show:true,formatter:'{b}:{c}人 ({d}%)'}},labelLine :{label:{show:true}}}"),
- ),
- );
- $ec = new Echarts();
- $result = $ec->getEcharts('pieArea', $optionPie, 'pie', '杜比广州上海活动2情况统计图'); // 显示在指定的dom节点上
- //返回的是js脚本
- return $result;
就这样调用就可以在前台显示统计图了。
对了在前台页面还要添加echarts引用,已经Jquery引用
<script src="http://echarts.baidu.com/build/dist/echarts.js"></script>
php 生成饼状图,折线图,条形图 通用类的更多相关文章
- php 生成饼状图,折线图,条形图 通用类 2
生成饼状图,折线图,条形图通用的php类,这里使用的是国外的 HighCharts,前台页面别忘了调用HighCahrt js HighCharts中文网站 http://www.hcharts. ...
- JFreeChart框架中生成饼状图上怎样显示数据 [问题点数:40分,结帖人GreenLawn]
我用JFreeChart框架生成饼状图,但想把数据信息在饼图上显示,是在饼图内部(即圆内)显示!怎样实现啊?? 去掉lablepieplot.setLabelGenerator(null);去掉线p ...
- 【Excel】绘图案例_常见复合图:簇状图+堆积图+折线图
前言 最近有朋友让我帮忙用excel画图,老实说我很讨厌用excel画图,点来点去,复杂一些还不能复用,非常繁琐.当然,入门也很简单.需求时不同城市.不同产品的2016和2017销量及环比数据,这应该 ...
- Python的可视化包 – Matplotlib 2D图表(点图和线图,.柱状或饼状类型的图),3D图表(曲面图,散点图和柱状图)
Python的可视化包 – Matplotlib Matplotlib是Python中最常用的可视化工具之一,可以非常方便地创建海量类型地2D图表和一些基本的3D图表.Matplotlib最早是为了可 ...
- highcharts 动态生成x轴和折线图
highchart 动态生成x轴和折线图 <!DOCTYPE HTML> <html> <head> <meta charset="utf-8&qu ...
- Echarts生成饼状图、条形图以及线形图 JS封装
1.在我们开发程序中,经常会用到生成一些报表,比方说饼状图,条形图,折线图等.不多说了,直接上封装好的代码,如下Echarts.js所示 以下代码是封装在Echarts.js文件中 /** * Cre ...
- PHP实现动态生成饼状图、柱状图和折线图(转载)
PHP在图像操作方面的表现非常出色,我们只需借助可以免费得到的GD库便可以轻松实现图.表勾画.下面将分别介绍PHP实现的饼状图.折线图和柱状图以 及他们的使用方法,这几段代码的特点就是不需要再把它们复 ...
- PHP实现动态生成饼状图 (转载)
<?php //变量定义,画椭圆弧时的角度大小 define("ANGLELENGTH", 10); /** * 绘制图片 * @param $title 3D图的标题 * ...
- 使用WinForm Chart控件 制作饼装,柱状,折线图
http://blog.csdn.net/dream2050csdn/article/details/53510340 chart控件的属性很多,主要用到Chart控件图表区域的属性有五个属性 1.A ...
随机推荐
- 阶乘问题(大数阶乘)简单 n! (一个大数与一个小数相乘的算法 、一个大数与一个小数的除法算法 *【模板】 )
sdut oj 简单n! Time Limit: 1000ms Memory limit: 65536K 有疑问?点这里^_^ 题目描述 给定一个数n(0 <= n <= 150), ...
- 如何使用BMap.Point传递变量、存储数据?
在开发中使用到了百度地图进行开发,用于展示企业位置.由于数据量庞大,如果使用marker,将会造成界面卡顿,处理慢的问题. 在查看百度地图API示例是发现了海量点这个东西,还别说对于大数量的点加载起来 ...
- I.MX6 Android 5.1.1 下载、编译
/************************************************************************* * I.MX6 Android 5.1.1 下载. ...
- 相对定位relative与绝对定位absolute
relative:相对定位,并没有脱离原来文档流,依然在原来的位置上,可以通过设置left,top,来设置自己的偏移量,但是它依然占据自己原来的位置,偏移的位置会遮盖其他的元素 absolute:绝对 ...
- 使用mysqlfrm恢复frm表结构,获得建表语句
1.mysqlfrm 是一个恢复性质的工具,用来读取.frm文件并从该文件中找到表定义数据生成CREATE语句. 下载链接:https://downloads.mysql.com/archives/u ...
- centos7安装redis3.2.12
1.准备安装包,放在/usr/local/src/ 2.解压安装包,解压到/usr/local/ tar zxf redis-3.2.12.tar.gz -C /usr/local/ 3.cd /us ...
- E20180424-hm
thumb n. 拇指; (手套的) 拇指部份; trigger vt. 引发,触发; 扣…的扳机; 发射或使爆炸(武器或爆炸性弹药); n. (枪) 扳机; 起动装置,扳柄; 引发其他事 ...
- 跳马~~~HDU1372
基础BFS,水过就好~手写队列优化~~ #include <iostream> #include <stdio.h> #include <string.h> #in ...
- jetty的web部署
jetty版本:jetty-distribution-9.4.8.v20171121,jdk1.8 1.下载jetty 2.cd demo-base 3.java -jar ../start.jar ...
- pycharm 断点调试
转自; https://blog.csdn.net/chenggong2dm/article/details/9368641 PyCharm 作为IDE,断点调试是必须有的功能.否则,我们还真不如用纯 ...