解决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 相关文章推荐
表单元素事件 (Form Element Events)
Jul 17 Javascript
面向对象的Javascript之一(初识Javascript)
Jan 20 Javascript
ff下JQuery无法监听input的keyup事件的解决方法
Dec 12 Javascript
利用JQuery和Servlet实现跨域提交请求示例分享
Feb 12 Javascript
Node.js事件循环(Event Loop)和线程池详解
Jan 28 Javascript
jQuery实现将页面上HTML标签换成另外标签的方法
Jun 09 Javascript
实例讲解JS中setTimeout()的用法
Jan 28 Javascript
vue的基本用法与常见指令
Aug 15 Javascript
使用async、enterproxy控制并发数量的方法详解
Jan 02 Javascript
详解angularjs跨页面传参遇到的一些问题
Nov 01 Javascript
如何换个角度使用VUE过滤器详解
Sep 11 Javascript
详解JavaScript匿名函数和闭包
Jul 10 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
Zerg兵种介绍
2020/03/14 星际争霸
PHP写的获取各搜索蜘蛛爬行记录代码
2012/08/21 PHP
解析PHP高效率写法(详解原因)
2013/06/20 PHP
ThinkPHP实现转换数据库查询结果数据到对应类型的方法
2017/11/16 PHP
解决AJAX中跨域访问出现'没有权限'的错误
2008/08/20 Javascript
JQuery 动态扩展对象之另类视角
2010/05/25 Javascript
重构Javascript代码示例(重构前后对比)
2013/01/23 Javascript
jQuery之选项卡的简单实现
2014/02/28 Javascript
js/jquery判断浏览器类型的方法小结
2015/05/12 Javascript
jQuery插件boxScroll实现图片轮播特效
2015/07/14 Javascript
jQuery表格行上移下移和置顶的实现方法
2015/10/08 Javascript
jQuery获取复选框被选中数量及判断选择值的方法详解
2016/05/25 Javascript
谈谈JavaScript中的几种借用方法
2016/08/09 Javascript
基于原生js淡入淡出函数封装(兼容IE)
2016/10/20 Javascript
canvas实现十二星座星空图
2017/02/14 Javascript
Vue项目分环境打包的实现步骤
2018/04/02 Javascript
vueJs实现DOM加载完之后自动下拉到底部的实例代码
2018/08/31 Javascript
JavaScript实现简单的隐藏式侧边栏功能示例
2018/08/31 Javascript
在Vue组件中获取全局的点击事件方法
2018/09/06 Javascript
layui实现鼠标移动到单元格上显示数据的方法
2019/09/11 Javascript
js+canvas实现两张图片合并成一张图片的方法
2019/11/01 Javascript
js实现课堂随机点名系统
2019/11/21 Javascript
python list转dict示例分享
2014/01/28 Python
使用C#配合ArcGIS Engine进行地理信息系统开发
2016/02/19 Python
3行Python代码实现图像照片抠图和换底色的方法
2019/10/10 Python
关于python中plt.hist参数的使用详解
2019/11/28 Python
如何通过python实现人脸识别验证
2020/01/17 Python
Python3 Click模块的使用方法详解
2020/02/12 Python
什么是Python变量作用域
2020/06/03 Python
印尼披萨外送专家:Domino’s Pizza印尼
2017/12/28 全球购物
List、Map、Set三个接口,存取元素时,各有什么特点?
2015/09/27 面试题
化验室技术员岗位职责
2013/12/24 职场文书
新郎新娘答谢词
2015/01/04 职场文书
OpenCV-Python使用cv2实现傅里叶变换
2021/06/09 Python
idea搭建可运行Servlet的Web项目
2021/06/26 Java/Android
Spring实现内置监听器
2021/07/09 Java/Android