使用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 相关文章推荐
Linux下实现PHP多进程的方法分享
Aug 16 PHP
PHP常用特殊运算符号和函数总结(php新手入门必看)
Feb 02 PHP
PHP获取数组长度或某个值出现次数的方法
Feb 11 PHP
php动态生成版权所有信息的方法
Mar 24 PHP
php结合正则批量抓取网页中邮箱地址
May 19 PHP
FastCGI 进程意外退出造成500错误
Jul 26 PHP
再推荐十款免费的php开发工具
Nov 09 PHP
php实现的操作excel类详解
Jan 15 PHP
PHP转换文本框内容为HTML格式的方法
Jul 20 PHP
PHP实现财务审核通过后返现金额到客户的功能
Jul 04 PHP
yii框架数据库关联查询操作示例
Oct 14 PHP
关于laravel 子查询 &amp; join的使用
Oct 16 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
Yii入门教程之目录结构、入口文件及路由设置
2014/11/25 PHP
WordPress中注册菜单与调用菜单的方法详解
2015/12/18 PHP
laravel 修改记住我功能的cookie保存时间的方法
2019/10/14 PHP
php图像生成函数之间的区别分析
2012/12/06 Javascript
详解JavaScript中undefined与null的区别
2014/03/29 Javascript
jquery 中的each()跳出循环的语句
2014/05/23 Javascript
Javascript 读取操作Sql中的Xml字段
2014/10/09 Javascript
jQuery中prop()方法用法实例
2015/01/05 Javascript
jQuery判断指定id的对象是否存在的方法
2015/05/22 Javascript
深入理解$.each和$(selector).each
2016/05/15 Javascript
jQuery+ajax读取并解析XML文件的方法
2016/09/09 Javascript
Javascript农历与公历相互转换的简单实例
2016/10/09 Javascript
JS对象是否拥有某属性如何判断
2017/02/03 Javascript
SeaJS中use函数用法实例分析
2017/10/10 Javascript
在vscode里使用.vue代码模板的方法
2018/04/28 Javascript
Vue在页面右上角实现可悬浮/隐藏的系统菜单
2018/05/04 Javascript
详解关于vue-area-linkage走过的坑
2018/06/27 Javascript
webpack4 + react 搭建多页面应用示例
2018/08/03 Javascript
使用webpack搭建vue项目及注意事项
2019/06/10 Javascript
[01:45]亚洲邀请赛互动指南虚拟物品介绍
2015/01/30 DOTA
Python中Class类用法实例分析
2015/11/12 Python
Python的Tornado框架实现图片上传及图片大小修改功能
2016/06/30 Python
TensorFlow实现随机训练和批量训练的方法
2018/04/28 Python
Python使用cx_Freeze库生成msi格式安装文件的方法
2018/07/10 Python
PyTorch的深度学习入门教程之构建神经网络
2019/06/27 Python
python把ipynb文件转换成pdf文件过程详解
2019/07/09 Python
python实现布隆过滤器及原理解析
2019/12/08 Python
pandas实现excel中的数据透视表和Vlookup函数功能代码
2020/02/14 Python
python PyAUtoGUI库实现自动化控制鼠标键盘
2020/09/09 Python
工程预算与管理应届生求职信
2013/10/06 职场文书
先进党支部事迹材料
2014/01/13 职场文书
求职简历自我评价范例
2014/03/12 职场文书
工作鉴定评语
2014/05/04 职场文书
委托书格式
2014/08/01 职场文书
大学生见习期满自我鉴定
2014/09/13 职场文书
小学二年级班主任工作经验交流材料
2015/11/02 职场文书