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 相关文章推荐
基于jquery的从一个页面跳转到另一个页面的指定位置的实现代码(带平滑移动的效果)
May 24 Javascript
jQuery EasyUI API 中文文档 可调整尺寸
Sep 29 Javascript
javascript中attribute和property的区别详解
Jun 05 Javascript
jQuery实现列表内容的动态载入特效
Aug 08 Javascript
Jquery attr()方法 属性赋值和属性获取详解
Apr 15 Javascript
使用Script元素发送JSONP请求的方法
Jun 12 Javascript
ES6教程之for循环和Map,Set用法分析
Apr 10 Javascript
vue-cli常用设置总结
Feb 24 Javascript
浅谈vuex actions和mutation的异曲同工
Dec 13 Javascript
vue-cli脚手架打包静态资源请求出错的原因与解决
Jun 06 Javascript
JSX在render函数中的应用详解
Sep 04 Javascript
JS倒计时两种实现方式代码实例
Jul 27 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 __autoload函数(自动载入类文件)的使用方法
2012/02/04 PHP
PHP转换文件夹下所有文件编码的实现代码
2013/06/06 PHP
php实现的返回数据格式化类实例
2014/09/22 PHP
CodeIgniter连贯操作的底层原理分析
2016/05/17 PHP
神奇的代码 通杀各种网站-可随意修改复制页面内容
2008/07/17 Javascript
判断ie的两种简单方法
2013/08/12 Javascript
详解如何去除vue项目中的#——History模式
2017/10/13 Javascript
通过一个简单的例子学会vuex与模块化
2017/11/22 Javascript
你点的 ES6一些小技巧,请查收
2018/04/25 Javascript
微信小程序支付PHP代码
2018/08/23 Javascript
vue项目在安卓低版本机显示空白的原因分析(两种)
2018/09/04 Javascript
前端面试知识点目录一览
2019/04/15 Javascript
jQuery实现高度灵活的表单验证功能示例【无UI】
2020/04/30 jQuery
JavaScript this关键字的深入详解
2021/01/14 Javascript
Python批量转换文件编码格式
2015/05/17 Python
在Python中操作时间之tzset()方法的使用教程
2015/05/22 Python
Python 中 Virtualenv 和 pip 的简单用法详解
2017/08/18 Python
python之matplotlib学习绘制动态更新图实例代码
2018/01/23 Python
使用Python微信库itchat获得好友和群组已撤回的消息
2018/06/24 Python
深入理解Django自定义信号(signals)
2018/10/15 Python
详解python做UI界面的方法
2019/02/27 Python
pandas中的series数据类型详解
2019/07/06 Python
Python实现二叉搜索树BST的方法示例
2019/07/30 Python
Python Django实现layui风格+django分页功能的例子
2019/08/29 Python
详解Python修复遥感影像条带的两种方式
2020/02/23 Python
Shopee马来西亚:随拍即卖,最佳行动电商拍卖平台
2017/06/05 全球购物
英国地毯卖家:The Rug Seller
2019/07/18 全球购物
PHP数据运算类型都有哪些
2013/11/05 面试题
酒店仓管员岗位职责
2014/04/28 职场文书
验房委托书
2014/08/30 职场文书
民主评议党员登记表自我评价
2014/10/20 职场文书
环卫工作个人总结
2015/03/04 职场文书
个人工作年终总结
2015/03/09 职场文书
使用nginx动态转换图片大小生成缩略图
2021/03/31 Servers
Python按顺序遍历并读取文件夹中文件
2022/04/29 Python
使用 CSS 构建强大且酷炫的粒子动画效果
2022/08/14 HTML / CSS