使用laravel和ECharts实现折线图效果的例子


Posted in PHP onOctober 09, 2019

1、首先引入echart.js

<script type="text/javascript" src="{{ asset('/public/js/echarts.js') }}"></script>

2、html页面,要有一个布局容器,用来显示图像,一定要设置宽和高

<div class="contain" style="width: 84%;" id="contain"></div>

3、echarts折线图的使用

var myChart = echarts.init(document.getElementById("contain"));
 
   option = {
    title : {
     text: '时间变化图' // 标题
    },
    tooltip : {
     trigger: 'axis' // 折线图
    },
    legend: {
     data:['时间'] // 图例,就是折线图上方的符号
    },
    toolbox: { // 工具箱,在折线图右上方的工具条,可以变成别的图像
     show : true,
     feature : {
      mark : {show: true},
      dataView : {show: true, readOnly: false},
      magicType : {show: true, type: ['line', 'bar']},
      restore : {show: true},
      saveAsImage : {show: true}
     }
    },
    calculable : true, // 是否启动拖拽重计算属性,默认false
    xAxis : [ // x坐标轴
     {
      axisLine: { // x坐标轴颜色
       lineStyle: { color: '#333' }
      },
      axisLabel: { // x轴的数据会旋转30度
       rotate: 30,
       interval: 0
      },
      type : 'category',
      boundaryGap : false, // x轴从0开始
      data : [] // x轴数据
     }
    ],
    yAxis : [ // y轴
     {
      type : 'value',
      axisLabel : {
       formatter: '{value} 秒' // y轴的值都加上秒的单位
      },
      axisLine: {
       lineStyle: { color: '#333' }
      }
     }
    ],
    series : [ // 设置图标数据用
     {
      name:'时间', 
      type:'line',
      smooth: 0.3, // 线有弧度
      data: [] // y轴数据
     }
    ]
   };
   // 使用刚指定的配置项和数据显示图表。
   myChart.setOption(option);

4、实现功能

(1)路由

Route::get('/', 'UserController@index');
Route::post('/axis', 'UserController@axis');

(2)方法

public function index()
 {
  return view('user.index');
 }
// 是ajax所用的的方法,得到要显示的数据,返回数组
public function axis()
 {
  $key = Key::all('name', 'ttl', 'created_time');
  return $key;
 }

(3)当访问/首页时,到index.blade.php

(4)index.blade.php的内容

<div class="contain" style="width: 84%;" id="contain"></div>
 
 <script type="text/javascript">
 
  var names = []; // 设置两个变量用来存变量
  var ttls = [];
  var time = Date.parse(new Date()).toString().substr(0, 10); // 获取当前时间,精确到秒,但因为是毫秒级的,会多3个0,变成字符串后去掉
  time = parseInt(time);
  function getData()
  {
   $.post("{{ url('/axis') }}", {
    "_token": "{{ csrf_token() }}"
   }, function(data) {
    $.each(data, function(i, item) {
     names.push(item.name);
     if((ttl = (parseInt(item.ttl) + parseInt(item.created_time) - time)) > 0) { // 小于0就==0,
      ttls.push(ttl);
     } else {
      ttls.push(0);
     }
    });
   });
  }
  getData(); // 一定不能忘了,调用
 
  // 实现画图的功能
  function chart() {
   var myChart = echarts.init(document.getElementById("contain"));
 
   option = {
    title : {
     text: '键名过期时间变化图'
    },
    tooltip : {
     trigger: 'axis'
    },
    legend: {
     data:['过期剩余时间']
    },
    toolbox: {
     show : true,
     feature : {
      mark : {show: true},
      dataView : {show: true, readOnly: false},
      magicType : {show: true, type: ['line', 'bar']},
      restore : {show: true},
      saveAsImage : {show: true}
     }
    },
    calculable : true,
    xAxis : [
     {
      axisLine: {
       lineStyle: { color: '#333' }
      },
      axisLabel: {
       rotate: 30,
       interval: 0
      },
      type : 'category',
      boundaryGap : false,
      data : names // x的数据,为上个方法中得到的names
     }
    ],
    yAxis : [
     {
      type : 'value',
      axisLabel : {
       formatter: '{value} 秒'
      },
      axisLine: {
       lineStyle: { color: '#333' }
      }
     }
    ],
    series : [
     {
      name:'过期剩余时间',
      type:'line',
      smooth: 0.3,
      data: ttls // y轴的数据,由上个方法中得到的ttls 
     } 
    ]
   };
   // 使用刚指定的配置项和数据显示图表。
   myChart.setOption(option);
  }
 
  setTimeout('chart()', 1000); // 为什么加定时器?因为上面是一起执行的,可能还未取得数据,便已经将图画好了,图上就没有数据,所以这里我延迟了1s,
 
 </script>

(5)大功告成!!

以上这篇使用laravel和ECharts实现折线图效果的例子就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持三水点靠木。

PHP 相关文章推荐
PHP 5.3新特性命名空间规则解析及高级功能
Mar 11 PHP
php中取得文件的后缀名?
Feb 20 PHP
PHP删除数组中的特定元素的代码
Jun 28 PHP
php一些错误处理的方法与技巧总结
Aug 10 PHP
php批量更改数据库表前缀实现方法
Oct 26 PHP
php获取汉字首字母的函数
Nov 07 PHP
使用PHP Socket 编程模拟Http post和get请求
Nov 25 PHP
PHP之预定义接口详解
Jul 29 PHP
Codeigniter中集成smarty和adodb的方法
Mar 04 PHP
Yii2框架制作RESTful风格的API快速入门教程
Nov 08 PHP
PHP实现对数组分页处理实例详解
Feb 07 PHP
PHP实现Session入库/存入redis的方法
May 04 PHP
Laravel统计一段时间间隔的数据方法
Oct 09 #PHP
浅谈PHP5.6 与 PHP7.0 区别
Oct 09 #PHP
laravel按天、按小时,查询数据的实例
Oct 09 #PHP
laravel多条件查询方法(and,or嵌套查询)
Oct 09 #PHP
Laravel find in set排序实例
Oct 09 #PHP
对laravel in 查询的使用方法详解
Oct 09 #PHP
laravel实现查询最后执行的一条sql语句的方法
Oct 09 #PHP
You might like
如何使用PHP往windows中添加用户
2006/12/06 PHP
分享PHP入门的学习方法
2007/01/02 PHP
基于PHP对XML的操作详解
2013/06/07 PHP
注意:php5.4删除了session_unregister函数
2013/08/05 PHP
thinkPHP5.0框架环境变量配置方法
2017/03/17 PHP
Laravel接收前端ajax传来的数据的实例代码
2017/07/20 PHP
yii2的restful api路由实例详解
2019/05/14 PHP
锋利的jQuery 要点归纳(三) jQuery中的事件和动画(下:动画篇)
2010/03/24 Javascript
jquery实现多行文字图片滚动效果示例代码
2014/10/10 Javascript
js实现div弹出层的方法
2014/11/20 Javascript
jQuery中:last-child选择器用法实例
2014/12/31 Javascript
详解Javascript继承的实现
2016/03/25 Javascript
javascript回到顶部特效
2016/07/30 Javascript
jquery实现图片上传前本地预览
2017/04/28 jQuery
JavaScript之浏览器对象_动力节点Java学院整理
2017/07/03 Javascript
浅谈vue2 单页面如何设置网页title
2017/11/08 Javascript
JavaScript调用模式与this关键字绑定的关系
2018/04/21 Javascript
Angular 实现输入框中显示文章标签的实例代码
2018/11/07 Javascript
JavaScript中.min.js和.js文件的区别讲解
2019/02/13 Javascript
利用JavaScript的Map提升性能的方法详解
2019/08/14 Javascript
vue中实现上传文件给后台实例详解
2019/08/22 Javascript
[49:05]OG vs Newbee 2019DOTA2国际邀请赛淘汰赛 胜者组 BO3 第二场 8.21.mp4
2020/07/19 DOTA
Python 连连看连接算法
2008/11/22 Python
python str与repr的区别
2013/03/23 Python
关于Pycharm无法debug问题的总结
2019/01/19 Python
Python基于正则表达式实现计算器功能
2020/07/13 Python
python 将html转换为pdf的几种方法
2020/12/29 Python
CSS3 实现发光边框特效
2020/11/11 HTML / CSS
职称自我鉴定
2013/10/15 职场文书
小学生自我评价范文
2014/01/25 职场文书
优秀研究生主要事迹
2014/06/03 职场文书
官僚主义现象查摆问题整改措施
2014/10/04 职场文书
2014年车间主任工作总结
2014/12/10 职场文书
2015年学校心理健康教育工作总结
2015/05/11 职场文书
银行大堂经理培训心得体会
2016/01/09 职场文书
学习心理学心得体会
2016/01/22 职场文书