使用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作的文本留言本的例子(二)
Oct 09 PHP
php4的session功能评述(一)
Oct 09 PHP
php获取地址栏信息的代码
Oct 08 PHP
php面向对象全攻略 (十六) 对象的串行化
Sep 30 PHP
一些需要禁用的PHP危险函数(disable_functions)
Feb 23 PHP
php将mysql数据库整库导出生成sql文件的具体实现
Jan 08 PHP
php不写闭合标签的好处
Mar 04 PHP
SESSION存放在数据库用法实例
Aug 08 PHP
php反射类ReflectionClass用法分析
May 12 PHP
PHP中用mysqli面向对象打开连接关闭mysql数据库的方法
Nov 05 PHP
浅谈PHP发送HTTP请求的几种方式
Jul 25 PHP
PHP copy函数使用案例代码解析
Sep 01 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.ini中文版(2)
2006/10/09 PHP
基于文本的搜索
2006/10/09 PHP
在PHP语言中使用JSON和将json还原成数组的方法
2016/07/19 PHP
CakePHP框架Model关联对象用法分析
2017/08/04 PHP
jQuery右键菜单contextMenu使用实例
2011/09/28 Javascript
js 浏览器事件介绍
2012/03/30 Javascript
如何调试异步加载页面里包含的js文件
2014/10/30 Javascript
使用jquery插件qrcode生成二维码
2015/10/22 Javascript
jQuery模仿京东/天猫商品左侧分类导航菜单效果
2016/06/29 Javascript
解析ajaxFileUpload 异步上传文件简单使用
2016/12/30 Javascript
利用C/C++编写node.js原生模块的方法教程
2017/07/07 Javascript
Vue AST源码解析第一篇
2017/07/19 Javascript
javascript数组拍平方法总结
2018/01/20 Javascript
nodejs中express入门和基础知识点学习
2018/09/13 NodeJs
JS数据类型判断的几种常用方法
2020/07/07 Javascript
基于p5.js 2D图像接口的扩展(交互实现)
2020/11/30 Javascript
python通过post提交数据的方法
2015/05/06 Python
pygame游戏之旅 添加icon和bgm音效的方法
2018/11/21 Python
python+selenium实现简历自动刷新的示例代码
2019/05/20 Python
python3.7 sys模块的具体使用
2019/07/22 Python
python编写softmax函数、交叉熵函数实例
2020/06/11 Python
H5 video poster属性设置视频封面的方法
2020/05/25 HTML / CSS
如何用SQL语句进行模糊查找
2015/09/25 面试题
毕业生动漫设计求职信
2013/10/11 职场文书
师范应届生语文教师求职信
2013/10/29 职场文书
会计电算化专业毕业生求职信范文
2013/12/10 职场文书
汽车维修专业个人求职信范文
2014/01/01 职场文书
数学系毕业生的自我评价
2014/01/10 职场文书
暑期学习心得体会
2014/09/02 职场文书
师德师风剖析材料
2014/09/30 职场文书
教师批评与自我批评(群众路线)
2014/10/15 职场文书
学雷锋献爱心活动总结
2015/05/11 职场文书
通用员工手册范本
2015/05/14 职场文书
小型婚礼主持词
2015/06/30 职场文书
Redis数据同步之redis shake的实现方法
2022/04/21 Redis
通过feDisplacementMap和feImage实现水波特效
2022/04/24 HTML / CSS