解决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 网页水印(非图片水印)实现代码
Mar 01 Javascript
鼠标划过实现延迟加载并隐藏层的js代码
Oct 11 Javascript
jquery数组之存放checkbox全选值示例代码
Dec 20 Javascript
js对table的td进行相同内容合并示例详解
Dec 27 Javascript
JavaScript利用append添加元素报错的解决方法
Jul 01 Javascript
JavaScript生成随机数的4种自定义函数分享
Feb 28 Javascript
js jquery获取当前元素的兄弟级 上一个 下一个元素
Sep 01 Javascript
基于jQuery实现二级下拉菜单效果
Feb 01 Javascript
BootStrap表单时间选择器详解
May 09 Javascript
Angular5中调用第三方库及jQuery的添加的方法
Jun 07 jQuery
微信小程序自定义单项选择器样式
Jul 25 Javascript
JavaScript canvas实现流星特效
May 20 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
vBulletin HACK----关于排版的两个HACK
2006/10/09 PHP
php 什么是PEAR?(第二篇)
2009/03/19 PHP
php获取用户浏览器版本的方法
2015/01/03 PHP
通过PHP的Wrapper无缝迁移原有项目到新服务的实现方法
2020/04/02 PHP
Nigma vs Alliance BO5 第四场2.14
2021/03/10 DOTA
jsp+javascript打造级连菜单的实例代码
2013/06/14 Javascript
js获取指定日期周数以及星期几的小例子
2014/06/27 Javascript
javascript实现状态栏文字首尾相接循环滚动的方法
2015/07/22 Javascript
jQuery多条件筛选如何实现
2015/11/04 Javascript
微信小程序 轮播图swiper详解及实例(源码下载)
2017/01/11 Javascript
JS实现仿百度文库评分功能
2017/01/12 Javascript
jQuery插件ImgAreaSelect实现头像上传预览和裁剪功能实例讲解一
2017/05/26 jQuery
JavaScript简介_动力节点Java学院整理
2017/06/26 Javascript
原生js实现省市区三级联动代码分享
2018/02/12 Javascript
swiper 解决动态加载数据滑动失效的问题
2018/02/26 Javascript
前后端常见的几种鉴权方式(小结)
2019/08/04 Javascript
js实现时分秒倒计时
2019/12/03 Javascript
Vue项目中使用mock.js的完整步骤
2021/01/12 Vue.js
pymongo实现多结果进行多列排序的方法
2015/05/16 Python
python利用装饰器进行运算的实例分析
2015/08/04 Python
python分析作业提交情况
2017/11/22 Python
Python获取当前函数名称方法实例分享
2018/01/18 Python
Python使用pydub库对mp3与wav格式进行互转的方法
2019/01/10 Python
详解Matplotlib绘图之属性设置
2019/08/23 Python
超实用的 30 段 Python 案例
2019/10/10 Python
Python基于traceback模块获取异常信息
2020/07/23 Python
Python编写memcached启动脚本代码实例
2020/08/14 Python
HTML5移动端开发中的Viewport标签及相关CSS用法解析
2016/04/15 HTML / CSS
肯尼亚网上商城:Kilimall
2016/08/20 全球购物
自我鉴定书范文
2013/10/02 职场文书
《火烧云》教学反思
2014/04/12 职场文书
询价采购方案
2014/06/09 职场文书
动画设计系毕业生求职信
2014/07/15 职场文书
机关党总支领导班子整改方案
2014/09/20 职场文书
统招统分证明
2015/06/23 职场文书
 python中的元类metaclass详情
2022/05/30 Python