vue+echarts实现动态折线图的方法与注意


Posted in Javascript onSeptember 01, 2020

之前公司有个绘制实时盈利率折线图的需求,实现的还不错,今天来分享下vue+echarts实现动态折线图的方法。

实现代码

<template>
 <div id="myChart"></div>
</template>

<script>
import echarts from 'echarts'
export default {
 name: 'DynamicLineChart',
 data () {
  return {
  	// 实时数据数组
   date: [],
   yieldRate: [],
   yieldIndex: [],
   // 折线图echarts初始化选项
   echartsOption: {
    legend: {
     data: ['实际收益率', '大盘收益率'],
    },
    xAxis: {
     name: '时间',
     nameTextStyle: {
      fontWeight: 600,
      fontSize: 18
     },
     type: 'category',
     boundaryGap: false,
     data: this.date,	// 绑定实时数据数组
    },
    yAxis: {
     name: '实际收益率',
     nameTextStyle: {
      fontWeight: 600,
      fontSize: 18
     },
     type: 'value',
     scale: true,
     boundaryGap: ['15%', '15%'],
     axisLabel: {
      interval: 'auto',
      formatter: '{value} %'
     }
    },
    tooltip: {
     trigger: 'axis',
    },
    series: [
     {
      name:'实际收益率',
      type:'line',
      smooth: true,
      data: this.yieldRate,	// 绑定实时数据数组
     },
     {
      name:'大盘收益率',
      type:'line',
      smooth: true,
      data: this.yieldIndex,	// 绑定实时数据数组
     }
    ]
   }
  }
 },
 mounted () {
  this.myChart = echarts.init(document.getElementById('myChart'), 'light');	// 初始化echarts, theme为light
  this.myChart.setOption(this.echartsOption);	// echarts设置初始化选项
  setInterval(this.addData, 3000);	// 每三秒更新实时数据到折线图
 },
 methods: {
 	// 获取当前时间
  getTime : function() {	
   var ts = arguments[0] || 0;
   var t, h, i, s;
   t = ts ? new Date(ts * 1000) : new Date();
   h = t.getHours();
   i = t.getMinutes();
   s = t.getSeconds();
   // 定义时间格式
   return (h < 10 ? '0' + h : h) + ':' + (i < 10 ? '0' + i : i) + ':' + (s < 10 ? '0' + s : s);
  },
  // 添加实时数据
  addData : function() {
  	// 从接口获取数据并添加到数组
   this.$axios.get('url').then((res) => {
    this.yieldRate.push((res.data.actualProfitRate * 100).toFixed(3));
    this.yieldIndex.push((res.data.benchmarkProfitRate * 100).toFixed(3));
    this.date.push(this.getTime(Math.round(new Date().getTime() / 1000)));
    // 重新将数组赋值给echarts选项
    this.echartsOption.xAxis.data = this.date;
    this.echartsOption.series[0].data = this.yieldRate;
    this.echartsOption.series[1].data = this.yieldIndex;
    this.myChart.setOption(this.echartsOption);
   });
  }
 }
}
</script>

<style>
// 设定宽高,不然超出windows会显示不出来
#myChart{
 width: 100%;
 height: 500px;
 margin: 0 auto;
}
</style>

要注意的有三点:

  • mounted中init并setOption初始化echarts
  • echartsOption里的data绑定数组
  • setInterval中要更新数组并重新将数组赋值给echarts选项

效果图

vue+echarts实现动态折线图的方法与注意

总结

到此这篇关于vue+echarts实现动态折线图的文章就介绍到这了,更多相关vue+echarts动态折线图内容请搜索三水点靠木以前的文章或继续浏览下面的相关文章希望大家以后多多支持三水点靠木!

Javascript 相关文章推荐
用JS操作FRAME中的IFRAME及其内容的实现代码
Jul 26 Javascript
Js制作简单弹出层DIV在页面居中 中间显示遮罩的具体方法
Aug 08 Javascript
Jquery实现图片左右自动滚动示例
Sep 25 Javascript
小议JavaScript中Generator和Iterator的使用
Jul 29 Javascript
详解Bootstrap的iCheck插件checkbox和radio
Aug 24 Javascript
基于jQuery实现歌词滚动版音乐播放器的代码
Sep 17 Javascript
微信小程序实现评论功能
Nov 28 Javascript
小程序自定义日历效果
Dec 29 Javascript
详解Vue.js和layui日期控件冲突问题解决办法
Jul 25 Javascript
vue中通过使用$attrs实现组件之间的数据传递功能
Sep 01 Javascript
Node.js实现批量下载图片简单操作示例
Jan 18 Javascript
关于vue-cli3打包代码后白屏的解决方案
Sep 02 Javascript
node.js 如何监视文件变化
Sep 01 #Javascript
JS JQuery获取data-*属性值方法解析
Sep 01 #jQuery
谈谈node.js中的模块系统
Sep 01 #Javascript
JavaScript浅层克隆与深度克隆示例详解
Sep 01 #Javascript
VUE子组件向父组件传值详解(含传多值及添加额外参数场景)
Sep 01 #Javascript
vue离开当前页面触发的函数代码
Sep 01 #Javascript
Vue 实现监听窗口关闭事件,并在窗口关闭前发送请求
Sep 01 #Javascript
You might like
php实现图片缩放功能类
2013/12/18 PHP
PHP获取本周第一天和最后一天示例代码
2014/02/24 PHP
PHP独立Session数据库存储操作类分享
2014/06/11 PHP
PHP用反撇号执行外部命令
2015/04/14 PHP
PHP+jQuery实现即点即改功能示例
2019/02/21 PHP
基于JQuery的日期联动实现代码
2011/02/24 Javascript
用javascript删除当前行,添加行(示例代码)
2013/11/25 Javascript
解析Javascript中难以理解的11个问题
2013/12/09 Javascript
教你用AngularJS框架一行JS代码实现控件验证效果
2014/06/23 Javascript
简单介绍JavaScript数据类型之隐式类型转换
2015/12/28 Javascript
探讨跨域请求资源的几种方式(总结)
2016/12/02 Javascript
两种简单的跨域方法(jsonp、php)
2017/01/02 Javascript
js监听input输入框值的实时变化实例
2017/01/26 Javascript
通过命令行创建vue项目的方法
2017/07/20 Javascript
详解vue项目打包后通过百度的BAE发布到网上的流程
2018/03/05 Javascript
vue.config.js中配置Vue的路径别名的方法
2020/02/11 Javascript
Python实现基本数据结构中队列的操作方法示例
2017/12/04 Python
用 Python 连接 MySQL 的几种方式详解
2018/04/04 Python
python使用代理ip访问网站的实例
2018/05/07 Python
Python实现在某个数组中查找一个值的算法示例
2018/06/27 Python
图文详解Django使用Pycharm连接MySQL数据库
2019/08/09 Python
详解Python list和numpy array的存储和读取方法
2019/11/06 Python
通过自学python能找到工作吗
2020/06/21 Python
一款纯css3实现的动画加载导航
2014/10/08 HTML / CSS
html5 外链式实现加减乘除的代码
2019/09/04 HTML / CSS
Juice Beauty官网:有机美容产品,护肤与化妆品
2020/06/13 全球购物
如何理解委托
2012/01/06 面试题
某公司面试题
2012/03/05 面试题
健康家庭事迹材料
2014/05/02 职场文书
2014高考励志标语
2014/06/05 职场文书
公司总经理岗位职责范本
2014/08/15 职场文书
关于群众路线的心得体会
2014/11/05 职场文书
走群众路线学习笔记
2014/11/06 职场文书
2019 入党申请书范文
2019/07/10 职场文书
Python数据结构之队列详解
2022/03/21 Python
阿里云服务器部署RabbitMQ集群的详细教程
2022/06/01 Servers