Think PHP:异步更新ECharts图表数据

栏目: PHP · 发布时间: 6年前

内容简介:Think PHP:异步更新ECharts图表数据

前言

在对一个以ThinkPHP为基础的网站源码进行改动时,由于其没有数据统计的功能,我想着在其代码的基础上机上这个功能。当然,数据统计的结果最好能够以图表的形式显示出来。经过在网上搜索之后,我选择了EChart,其是个开源的数据可视化Javascript库,操作简单,使用方便。

ECharts下载使用

官网介绍:

ECharts,一个纯Javascript 的图表库,可以流畅的运行在 PC 和移动设备上,兼容当前绝大部分浏览器(IE8/9/10/11,Chrome,Firefox,Safari等),底层依赖轻量级的 Canvas 类库 [ZRender (https://github.com/ecomfe/zrender),提供直观,生动,可交互,可高度个性化定制的数据可视化图表。

ECharts 3 中更是加入了更多丰富的交互功能以及更多的可视化效果,并且对移动端做了深度的优化。

官网给出了很多示例,效果非常酷炫而且支持实时互动。其基本的工作原理是使用

<a href="https://www.52bz.la/tag/html" title="HTML" target="_blank">HTML</a>

div

标签作为容器来承载图表。在下载时会发现提供了4种下载版本,这里推荐大家使用“源代码”版本,方便调试。

Think PHP:异步更新ECharts图表数据

image.png

官方教程中给出了一个Demo源码:

<!DOCTYPE html> <html> <head>     <meta charset="utf-8">     <title>ECharts</title>     <!-- 引入 echarts.js -->     <script src="echarts.min.js"></script> </head> <body>     <!-- 为ECharts准备一个具备大小(宽高)的Dom -->     <div id="main" style="width: 600px;height:400px;"></div>     <script type="text/javascript">         // 基于准备好的dom,初始化echarts实例         var myChart = echarts.init(document.getElementById('main'));          // 指定图表的配置项和数据         var option = {             title: {                 text: 'ECharts 入门示例'             },             tooltip: {},             legend: {                 data:['销量']             },             xAxis: {                 data: ["衬衫","羊毛衫","雪纺衫","裤子","高跟鞋","袜子"]             },             yAxis: {},             series: [{                 name: '销量',                 type: 'bar',                 data: [5, 20, 36, 10, 10, 20]             }]         };          // 使用刚指定的配置项和数据显示图表。         myChart.setOption(option);     </script> </body> </html>

显示效果为:(可以看到在鼠标滑过时可以实时显示真实数据)

Think PHP:异步更新ECharts图表数据

image.png

异步更新ECharts图表数据

由上述给出的Demo可以看出,Y轴的数据由

series

中的

data

项给出,X轴的数据由

xAxis

中的

data

给出。在实际使用时,数据不可能在代码中给出,我们往往需要在数据库中查找数据之后进行显示。这种情况下就需要异步加载数据,ECharts 中可以通过

<a href="https://www.52bz.la/tag/jquery" title="Jquery" target="_blank">Jquery</a>

工具 异步获取数据后通过 setOption 将数据填入

data

项即可。

(附官网给出的异步加载示例)

var myChart = echarts.init(document.getElementById('main')); // 显示标题,图例和空的坐标轴 myChart.setOption({     title: {         text: '异步数据加载示例'     },     tooltip: {},     legend: {         data:['销量']     },     xAxis: {         data: []     },     yAxis: {},     series: [{         name: '销量',         type: 'bar',         data: []     }] });  // 异步加载数据 $.get('data.json').done(function (data) {     // 填入数据     myChart.setOption({         xAxis: {             data: data.categories         },         series: [{             // 根据名字对应到相应的系列             name: '销量',             data: data.data         }]     }); });

ThinkPHP下的配置使用

本次示例使用的

Think <a href="https://www.52bz.la/tag/php" title="PHP" target="_blank">PHP</a>

的版本为

3.2.3

,目前其最新的版本为

5.0.10

,不过对于基本功能来说两者的区别不大,所以就算是与我的版本不同,代码也基本上可以运行。(点击下载

Think <a href="https://www.52bz.la/tag/php" title="PHP" target="_blank">PHP</a>3.2.3

下载完成之后,我们需要安装本地服务器

WAMPServer

,点击进入官网进行下载安装即可,这里不再做过多说明。

注:本地服务器也有其它的软件可以选择,如

XAMP

WAMPServer

属于集成环境,即其包含

Apache

<a href="https://www.52bz.la/tag/php" title="PHP" target="_blank">PHP</a>

<a href="https://www.52bz.la/tag/mysql" title="Mysql" target="_blank">Mysql</a>

,使用很方便。当然也可以选择安装这三个软件,使用效果是一样的。

3.2.3

版本的快速入门教程ThinkPHP3.2.3快速入门

WAMPServer

安装运行之后,会在右下角任务栏处出现一个

W

型的图标,默认是英文版的,右键可以选择中文语言。然后将下载后的

Think <a href="https://www.52bz.la/tag/php" title="PHP" target="_blank">PHP</a>

代码包放入

WAMPServer

www

目录,这个就是你服务器的根目录。(

Think<a href="https://www.52bz.la/tag/php" title="PHP" target="_blank">PHP</a>Origin

即是

Think <a href="https://www.52bz.la/tag/php" title="PHP" target="_blank">PHP</a>

的代码包,我这里改了名字)

Think PHP:异步更新ECharts图表数据

image.png

这一步完成之后,在浏览器地址栏中输入

http://localhost/Think<a href="https://www.52bz.la/tag/php" title="PHP" target="_blank">PHP</a>Origin/Home/Index/index

,可以看到:

Think PHP:异步更新ECharts图表数据

image.png

说明

Think <a href="https://www.52bz.la/tag/php" title="PHP" target="_blank">PHP</a>

已经配置成功!

下面我们开始写代码(●ˇ∀ˇ●)

首先在

Home/Controller

目录中建立一个新的控制器,文件名为

ChartsController.class.<a href="https://www.52bz.la/tag/php" title="PHP" target="_blank">PHP</a>

,内容为:

<?php namespace Home/Controller; use Think/Controller; class ChartsController extends Controller{     public function index(){         $this->display();     }      public function getData(){         //数据应该从数据库中取出,这里采用直接赋值的方式,和使用数据库时代码一样         $data['categories']  = array("衬衫","羊毛衫","雪纺衫","裤子","高跟鞋","袜子");         $data['data'] = array(5, 20, 36, 10, 10, 20);         $this->ajaxReturn($data);     }          public function test(){         echo "__APP__";     } }

在对应的

Home/View/Charts

目录下新建视图文件,

index.<a href="https://www.52bz.la/tag/html" title="HTML" target="_blank">HTML</a>

<!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title>JQuery Ajax Test</title> <!-- ECharts的js文件 --> <script src="__PUBLIC__/js/echarts.js"></script> <!-- JQuery的js文件 --> <script src="__PUBLIC__/js/jquery-1.4.4.min.js"></script> <style>     body{ text-align:center} /* 使div居中显示 */     #container{margin:0 auto;border:1px solid #000;width:600px;height:400px}  </style> </head> <body>     <h1>PHP Ajax ECahrts 测试</h1>     <hr>     <div id="container"></div> <script>  var myChart = echarts.init(document.getElementById('container')); // 显示标题,图例和空的坐标轴 myChart.setOption({     title: {         text: '异步数据加载示例'     },     tooltip: {},     legend: {         data:['销量']     },     xAxis: {         data: []     },     yAxis: {},     series: [{         name: '销量',         type: 'bar',         center: ['100%', '50%'],         data: []     }] });   $.ajax({     url:"__CONTROLLER__/getData",//这里指向的就不再是页面了,而是一个方法。路径填写__CONTROLLER__/getData也正确     data:{},     type:"POST",     dataType:"JSON",     success: function(data){         var obj = eval('(' + data + ')');//由JSON字符串转换为JSON对象         myChart.setOption({             xAxis: {                 data: obj.categories             },             series: [{                 // 根据名字对应到相应的系列                 name: '销量',                 data: obj.data             }]         });      } });  </script>  </body> </html>

其中

js

文件均放在

Think<a href="https://www.52bz.la/tag/php" title="PHP" target="_blank">PHP</a>Origin/Public/js/

路径下。

在浏览器地址栏中输入

http://localhost/Think<a href="https://www.52bz.la/tag/php" title="PHP" target="_blank">PHP</a>Origin/Home/Charts/index

Think PHP:异步更新ECharts图表数据

image.png

结语

如果在部署ThinkPHP代码后,浏览器访问时出现404错误,可以参考Think PHP:Apache开启PATHINFO模式。


以上所述就是小编给大家介绍的《Think PHP:异步更新ECharts图表数据》,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对 码农网 的支持!

查看所有标签

猜你喜欢:

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

深入理解C++11

深入理解C++11

Michael Wong、IBM XL编译器中国开发团队 / 机械工业出版社 / 2013-6 / 69.00元

《深入理解C++11:C++11新特性解析与应用》内容简介:国内首本全面深入解读C++11新标准的专著,由C++标准委员会代表和IBM XL编译器中国开发团队共同撰写。不仅详细阐述了C++11标准的设计原则,而且系统地讲解了C++11新标准中的所有新语言特性、新标准库特性、对原有特性的改进,以及如何应用所有这些新特性。 《深入理解C++11:C++11新特性解析与应用》一共8章:第1章从设计......一起来看看 《深入理解C++11》 这本书的介绍吧!

Markdown 在线编辑器
Markdown 在线编辑器

Markdown 在线编辑器

RGB HSV 转换
RGB HSV 转换

RGB HSV 互转工具

RGB CMYK 转换工具
RGB CMYK 转换工具

RGB CMYK 互转工具