解决echarts echarts数据动态更新和dataZoom被重置问题


Posted in Javascript onJuly 20, 2020

1.全局绑定滚轮事件,获得dataZoom最新的位置:

myChart.on('dataZoom',function(event){
   if(event.batch){
   start=event.batch[0].start;
   end=event.batch[0].end;
   }else{
   start=event.start;
   end=event.end;
   };
});

2.把最新的start和end赋值给要更新的option

window.setInterval(function () {
  num=Math.random()*num+100;
 data0.splice(0,1);
 data0.push(num);
 
 option.dataZoom[0].start=start;
 option.dataZoom[0].end=end;
 myChart.setOption(option);  
},3000);

3.echart数据增量刷新还可以用appendData

补充知识:echarts动态添加数据

我就废话不多说了,大家还是直接看代码吧~

<template>
  <!--为echarts准备一个具备大小的容器dom-->
 	<div id="main" style="width: 600px;height: 400px;"></div>
</template>
<script>
  import echarts from 'echarts'
 
  export default {
    name: 'Chart',
    data () {
      return {
        charts: '',
      }
    },
    methods:{
      initLine(id){
        this.charts = echarts.init(document.getElementById(id))
        this.charts.setOption({
          title: {
            text: '动态数据 + 时间坐标轴'
          },
          tooltip: {
            trigger: 'axis',
            formatter: function (params) {
              params = params[0]
              return params.value[0] + ' : ' + params.value[1]
            },
            axisPointer: {
              animation: false
            }
          },
          xAxis: {
            type: 'time',
            splitLine: {
              show: false
            }
          },
          yAxis: {
            type: 'value',
            boundaryGap: [0, '100%'],
            splitLine: {
              show: false
            }
          },
          animation: false
        })
       }
    },
    mounted(){
      this.$nextTick(function() {
        this.initLine('main')
        this.charts.setOption({
          series : [
            {
              name : '模拟数据0',
              type : 'line',
              showSymbol : false,
              hoverAnimation : false,
              data : [['2018-01-02', '3'],['2018-01-05', '4']]
            }
          ]
        })
        
        setTimeout(() => {
          this.charts.appendData({
            seriesIndex:0,
            data : [['2018-01-03', '1'],['2018-01-07', '2']]
          })
        },2000)
        
        setTimeout(() => {
          this.charts.resize();  
        },4000)
 
        setTimeout(() => {
          this.charts.setOption({
            series : [
              {},
              {
                name : '模拟数据1',
                type : 'line',
                showSymbol : false,
                hoverAnimation : false,
                data : [['2018-01-02', '5'],['2018-01-05', '10']]
              }
            ]
          })
          this.charts.appendData({
            seriesIndex:1,
            data : [['2018-01-03', '11'],['2018-01-10', '2']]
          })
        },6000) 
        setTimeout(() => {
          this.charts.resize();  
        },8000)
      })
    }
  }
</script>
<style scoped>
  * {
    margin: 0;
    padding: 0;
    list-style: none;
  }
</style>

补充

主动使用echarts的resize方法改变图表大小:

(opts?: {
  width?: number|string,
  height?: number|string,
  silent?: boolean
})

当在参数中填入宽高,this.echarts.resize({width:300}),dom层必须有一个初始化像素的宽高,百分比的宽高该方法不会生效。

以上这篇解决echarts echarts数据动态更新和dataZoom被重置问题就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
JavaScript面象对象设计
Apr 28 Javascript
简单的邮箱登陆的提示效果类似于yahoo邮箱
Feb 26 Javascript
jQuery 删除/替换DOM元素的几种方式
May 20 Javascript
招聘网站基于jQuery实现自动刷新简历
May 10 Javascript
Angularjs CURD 详解及实例代码
Sep 14 Javascript
JavaScript实现按键精灵的原理分析
Feb 21 Javascript
vue 中自定义指令改变data中的值
Jun 02 Javascript
轻量级JS Cookie插件js-cookie的使用方法
Mar 22 Javascript
vue.js 实现点击按钮动态添加li的方法
Sep 07 Javascript
小程序server请求微信服务器超时的解决方法
May 21 Javascript
浅谈微信小程序列表埋点曝光指南
Oct 15 Javascript
在vue中给后台接口传的值为数组的格式代码
Nov 12 Javascript
JavaScript如何实现监听键盘输入和鼠标监点击
Jul 20 #Javascript
解决echarts vue数据更新,视图不更新问题(echarts嵌在vue弹框中)
Jul 20 #Javascript
基于Echarts图表在div动态切换时不显示的解决方式
Jul 20 #Javascript
在vue中使用Echarts利用watch做动态数据渲染操作
Jul 20 #Javascript
vue-router之解决addRoutes使用遇到的坑
Jul 19 #Javascript
解决vue+router路由跳转不起作用的一项原因
Jul 19 #Javascript
解决vue项目router切换太慢问题
Jul 19 #Javascript
You might like
在IIS7.0下面配置PHP 5.3.2运行环境的方法
2010/04/13 PHP
php实现mysql数据库连接操作及用户管理
2015/11/08 PHP
Yii框架函数简单用法分析
2019/09/09 PHP
JavaScript 组件之旅(一)分析和设计
2009/10/28 Javascript
jQuery与ExtJS之选择实例分析
2010/08/19 Javascript
js判断所有表单项不为空则提交表单的实现方法
2016/09/09 Javascript
微信小程序 教程之注册页面
2016/10/17 Javascript
浅谈JS中String()与 .toString()的区别
2016/10/20 Javascript
微信小程序 progress组件详解及实例代码
2016/10/25 Javascript
js简单正则验证汉字英文及下划线的方法
2016/11/28 Javascript
React简单介绍
2017/05/24 Javascript
vue单页应用中如何使用jquery的方法示例
2017/07/27 jQuery
jQuery中的for循环var与let的区别
2018/04/21 jQuery
JS+HTML实现的圆形可点击区域示例【3种方法】
2018/08/01 Javascript
Vue 实现列表动态添加和删除的两种方法小结
2018/09/07 Javascript
详解vscode中vue代码颜色插件
2018/10/11 Javascript
vuex实现的简单购物车功能示例
2019/02/13 Javascript
vue调用语音播放的方法
2019/09/27 Javascript
vue props default Array或是Object的正确写法说明
2020/07/30 Javascript
Python 开发Activex组件方法
2009/11/08 Python
Python实现读取目录所有文件的文件名并保存到txt文件代码
2014/11/22 Python
python下MySQLdb用法实例分析
2015/06/08 Python
Python3 模块、包调用&amp;路径详解
2017/10/25 Python
python实现百度语音识别api
2018/04/10 Python
python 遍历目录(包括子目录)下所有文件的实例
2018/07/11 Python
Python实现微信机器人的方法
2019/09/06 Python
使用PyOpenGL绘制三维坐标系实例
2019/12/24 Python
解决jupyter运行pyqt代码内核重启的问题
2020/04/16 Python
如何基于Python按行合并两个txt
2020/11/03 Python
HTML5 Canvas的常用线条属性值总结
2016/03/17 HTML / CSS
使用phonegap操作数据库的实现方法
2017/03/31 HTML / CSS
西式结婚主持词
2014/03/14 职场文书
入党积极分子学习两会心得体会范文
2014/03/17 职场文书
财务统计员岗位职责
2015/04/14 职场文书
2016年社区“我们的节日·中秋节”活动总结
2016/04/05 职场文书
mysql 排序失效
2022/05/20 MySQL