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 相关文章推荐
JavaScript 学习笔记一些小技巧
Mar 28 Javascript
jQuery中读取json文件示例代码
May 10 Javascript
脚本合并提升javascript性能示例
Feb 24 Javascript
bootstrap table配置参数例子
Jan 05 Javascript
微信小程序  http请求封装详解及实例代码
Feb 15 Javascript
bootstrap fileinput实现文件上传功能
Aug 23 Javascript
vue2.0 资源文件assets和static的区别详解
Apr 08 Javascript
vue配置请求本地json数据的方法
Apr 11 Javascript
Vue项目中最新用到的一些实用小技巧
Nov 06 Javascript
koa router 多文件引入的方法示例
May 22 Javascript
jQuery利用cookie 实现本地收藏功能(不重复无需多次命名)
Nov 07 jQuery
使用webpack5从0到1搭建一个react项目的实现步骤
Dec 16 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
dvwa+xampp搭建显示乱码的问题及解决方案
2015/08/23 PHP
php强制下载文件函数
2016/08/24 PHP
yii框架结合charjs实现统计30天数据的方法
2020/04/04 PHP
Javascript new关键字的玄机 以及其它
2010/08/25 Javascript
基于jquery的下拉框改变动态添加和删除表格实现代码
2020/09/12 Javascript
基于jquery的web页面日期格式化插件
2011/11/15 Javascript
ko knockoutjs动态属性绑定技巧应用
2012/11/14 Javascript
jquery插件NProgress.js制作网页加载进度条
2015/06/05 Javascript
javascript实现简单的进度条
2015/07/02 Javascript
有关json_decode乱码及NULL的问题
2015/10/13 Javascript
JavaScript实现iframe自动高度调整和不同主域名跨域
2016/02/27 Javascript
JavaScript必看小技巧(必看)
2016/06/07 Javascript
任意Json转成无序列表的方法示例
2016/12/09 Javascript
使用Bootstrap Tabs选项卡Ajax加载数据实现
2016/12/23 Javascript
ES6数组的扩展详解
2017/04/25 Javascript
vue+element实现批量删除功能的示例
2018/02/28 Javascript
用node开发并发布一个cli工具的方法步骤
2019/01/03 Javascript
详解几十行代码实现一个vue的状态管理
2019/01/28 Javascript
微信小程序轮播图swiper代码详解
2020/12/01 Javascript
ES6的循环与可迭代对象示例详解
2021/01/31 Javascript
[01:23:35]Ti4主赛事胜者组 DK vs EG 1
2014/07/19 DOTA
django2用iframe标签完成网页内嵌播放b站视频功能
2018/06/20 Python
Python 变量类型详解
2018/10/10 Python
PyQt5实现简单数据标注工具
2019/03/18 Python
Python求两点之间的直线距离(2种实现方法)
2019/07/07 Python
python检测服务器端口代码实例
2019/08/31 Python
Python +Selenium解决图片验证码登录或注册问题(推荐)
2020/02/09 Python
Python+OpenCV检测灯光亮点的实现方法
2020/11/02 Python
CSS3教程(7):CSS3嵌入字体
2009/04/02 HTML / CSS
SmartBuyGlasses美国官网:太阳眼镜和眼镜
2017/08/20 全球购物
世界上最大的艺术社区:SAA
2020/12/30 全球购物
乡下人家教学反思
2014/02/01 职场文书
卫校毕业生自我鉴定
2014/09/28 职场文书
2014年售后服务工作总结
2014/11/18 职场文书
公司催款律师函
2015/05/27 职场文书
MySQL派生表联表查询实战过程
2022/03/20 MySQL