使用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 相关文章推荐
5.PHP的其他功能
Oct 09 PHP
实现“上一页”和“下一页按钮
Oct 09 PHP
PHP 编程请选择正确的文本编辑软件
Dec 21 PHP
PHP中常用数组处理方法实例分析
Aug 30 PHP
php模拟js函数unescape的函数代码
Oct 20 PHP
CI(CodeIgniter)框架配置
Jun 10 PHP
PHP CodeIgniter框架的工作原理研究
Mar 30 PHP
symfony2.4的twig中date用法分析
Mar 18 PHP
Smarty模板变量调节器用法分析
May 23 PHP
php版微信数据统计接口用法示例
Oct 12 PHP
自制PHP框架之设计模式
May 07 PHP
PHP 爬取网页的主要方法
Jul 13 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 HTML代码串 截取实现代码
2009/06/29 PHP
php生成带logo二维码方法小结
2016/04/08 PHP
YII2.0框架行为(Behavior)深入详解
2019/07/26 PHP
基于jQuery的淡入淡出可自动切换的幻灯插件
2010/08/24 Javascript
js变形金刚文字特效代码分享
2015/08/20 Javascript
js文本框走动跑马灯效果代码分享
2015/08/25 Javascript
全面解析Bootstrap表单使用方法(表单样式)
2015/11/24 Javascript
基于jquery实现ajax无刷新评论
2020/08/19 Javascript
JS中mouseover和mouseout多次触发问题如何解决
2016/06/06 Javascript
Jquery EasyUI Datagrid右键菜单实现方法
2016/12/30 Javascript
jquery中关于bind()方法的使用技巧分享
2017/03/30 jQuery
jquery实现倒计时小应用
2017/09/19 jQuery
jquery-file-upload 文件上传带进度条效果
2017/11/21 jQuery
js 实现复选框只能选择一项的示例代码
2018/01/23 Javascript
elementUI table表格动态合并的示例代码
2019/05/15 Javascript
微信小程序云开发实现数据添加、查询和分页
2019/05/17 Javascript
layui实现多图片上传并限制上传的图片数量
2019/09/26 Javascript
浅谈如何优雅处理JavaScript异步错误
2019/11/12 Javascript
Bootstrap table 服务器端分页功能实现方法示例
2020/06/01 Javascript
在Vue中使用HOC模式的实现
2020/08/23 Javascript
[38:41]2014 DOTA2国际邀请赛中国区预选赛 LGD VS CNB
2014/05/22 DOTA
[01:06:43]完美世界DOTA2联赛PWL S3 PXG vs GXR 第二场 12.19
2020/12/24 DOTA
python基础教程之字典操作详解
2014/03/25 Python
Python中Django框架利用url来控制登录的方法
2015/07/25 Python
Django进阶之CSRF的解决
2018/08/01 Python
python接口自动化(十七)--Json 数据处理---一次爬坑记(详解)
2019/04/18 Python
python如何制作缩略图
2019/04/30 Python
python GUI库图形界面开发之PyQt5控件数据拖曳Drag与Drop详细使用方法与实例
2020/02/27 Python
选购世界上最好的美妆品:Cult Beauty
2017/11/03 全球购物
美国精品地毯网站:Boutique Rugs
2020/03/04 全球购物
《小松树和大松树》教学反思
2014/02/20 职场文书
地道战观后感2000字
2015/06/04 职场文书
可怜妈妈观后感
2015/06/09 职场文书
张丽莉事迹观后感
2015/06/16 职场文书
总结会主持词
2015/07/02 职场文书
springboot中rabbitmq实现消息可靠性机制详解
2021/09/25 Java/Android