使用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,不用COM,生成excel文件
Oct 09 PHP
PHP Session变量不能传送到下一页的解决方法
Nov 27 PHP
PHP性能优化 产生高度优化代码
Jul 22 PHP
基于Linux调试工具strace与gdb的常用命令总结
Jun 03 PHP
php 模拟GMAIL,HOTMAIL(MSN),YAHOO,163,126邮箱登录的详细介绍
Jun 18 PHP
php中使用PHPExcel读写excel(xls)文件的方法
Sep 15 PHP
php实现Mongodb自定义方式生成自增ID的方法
Mar 23 PHP
php将字符串随机分割成不同长度数组的方法
Jun 01 PHP
Laravel使用memcached缓存对文章增删改查进行优化的方法
Oct 08 PHP
php实现当前页面点击下载文件的实例代码
Nov 16 PHP
laravel ORM 只开启created_at的几种方法总结
Jan 29 PHP
详解php用static方法的原因
Sep 12 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实现下载限制速度示例分享
2014/02/13 PHP
PHP使用mysqldump命令导出数据库
2015/04/14 PHP
PHP文件读取功能的应用实例
2015/05/08 PHP
PHP生成各种常见验证码和Ajax验证过程
2016/01/10 PHP
动态表格Table类的实现
2009/08/26 Javascript
jQuery实现类似老虎机滚动抽奖效果
2015/08/06 Javascript
jQuery限制图片大小的方法
2016/05/25 Javascript
javascript显示倒计时控制按钮的简单实现
2016/06/07 Javascript
微信小程序-横向滑动scroll-view隐藏滚动条
2017/04/20 Javascript
浅谈Angular路由复用策略
2017/10/04 Javascript
js数组去重的N种方法(小结)
2018/06/07 Javascript
在vue中使用jsx语法的使用方法
2019/09/30 Javascript
深入了解JavaScript词法作用域
2020/07/29 Javascript
vue+element table表格实现动态列筛选的示例代码
2021/01/14 Vue.js
[11:44]Ti9 OG夺冠时刻
2019/08/25 DOTA
[03:15]DOTA2-DPC中国联赛1月22日Recap集锦
2021/03/11 DOTA
Python查询IP地址归属完整代码
2017/06/21 Python
使用python在本地电脑上快速处理数据
2017/06/22 Python
numpy.random模块用法总结
2019/05/27 Python
python调用并链接MATLAB脚本详解
2019/07/05 Python
Python如何省略括号方法详解
2020/03/21 Python
python进行参数传递的方法
2020/05/12 Python
基于Python的一个自动录入表格的小程序
2020/08/05 Python
python在CMD界面读取excel所有数据的示例
2020/09/28 Python
泰国第一的化妆品网站:Konvy
2018/02/25 全球购物
消防安全检查制度
2014/02/04 职场文书
优秀三好学生事迹材料
2014/08/31 职场文书
红色旅游心得体会
2014/09/03 职场文书
2014年银行员工年终自我评价
2014/09/19 职场文书
辩论赛开场白大全(主持人+辩手)
2015/05/29 职场文书
孟佩杰观后感
2015/06/17 职场文书
工作服管理制度范本
2015/08/06 职场文书
低端且暴利的线上线下创业项目分享
2019/09/03 职场文书
MySQL系列之十 MySQL事务隔离实现并发控制
2021/07/02 MySQL
Python 居然可以在 Excel 中画画你知道吗
2022/02/15 Python
Linux中sftp常用命令整理
2022/06/28 Servers