解决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 相关文章推荐
学习ExtJS(一) 之基础前提
Oct 07 Javascript
jquery自动完成插件(autocomplete)应用之PHP版
Dec 15 Javascript
jQuery 删除或是清空某个HTML元素示例
Aug 04 Javascript
用js提交表单解决一个页面有多个提交按钮的问题
Sep 01 Javascript
js实现文字在按钮上滚动的方法
Aug 20 Javascript
AngularJS基础 ng-csp 指令详解
Aug 01 Javascript
jQuery中show与hide方法用法示例
Sep 16 Javascript
基于jQuery实现滚动刷新效果
Jan 09 Javascript
Vue filters过滤器的使用方法
Jul 14 Javascript
vue实现移动端图片上传功能
Dec 23 Javascript
微信小程序 wx.getUserInfo引导用户授权问题实例分析
Mar 09 Javascript
Node.js web 应用如何封装到Docker容器中
Sep 01 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
PHP新手上路(十四)
2006/10/09 PHP
实现php加速的eAccelerator dll支持文件打包下载
2007/09/30 PHP
实用函数5
2007/11/08 PHP
按上下级层次关系输出内容的PHP代码
2010/07/17 PHP
php中将地址生成迅雷快车旋风链接的代码[测试通过]
2011/04/20 PHP
实例讲解PHP设计模式编程中的简单工厂模式
2016/02/29 PHP
PHP5.5迭代生成器用法实例详解
2016/03/16 PHP
关于php中一些字符串总结
2016/05/05 PHP
xmlhttp缓存清除的2种解决方法
2013/12/13 Javascript
javascript正则表达式基础知识入门
2015/04/20 Javascript
浅析javascript函数表达式
2016/02/10 Javascript
浅谈js中的in-for循环
2016/06/28 Javascript
Vue方法与事件处理器详解
2016/12/01 Javascript
使用vue制作FullPage页面滚动效果
2017/08/21 Javascript
Vue监听页面刷新和关闭功能
2019/06/20 Javascript
使用VueCli3+TypeScript+Vuex一步步构建todoList的方法
2019/07/25 Javascript
matplotlib中legend位置调整解析
2017/12/19 Python
python调用系统ffmpeg实现视频截图、http发送
2018/03/06 Python
python f-string式格式化听语音流程讲解
2019/06/18 Python
python爬取本站电子书信息并入库的实现代码
2020/01/20 Python
详解Python之Scrapy爬虫教程NBA球员数据存放到Mysql数据库
2021/01/24 Python
css3实现一款模仿iphone样式的注册表单
2013/03/20 HTML / CSS
泰国国际航空公司官网:Thai Airways International
2019/12/04 全球购物
竞聘医务工作人员的自我评价分享
2013/11/04 职场文书
物业经理自我鉴定
2014/03/03 职场文书
品质主管岗位职责
2014/03/16 职场文书
刊首寄语大全
2014/04/11 职场文书
2014年党务公开方案
2014/05/08 职场文书
青安岗事迹材料
2014/05/14 职场文书
求职信名称怎么写
2014/05/26 职场文书
集中采购方案
2014/06/10 职场文书
技术员岗位职责范本
2015/04/11 职场文书
超级礼物观后感
2015/06/15 职场文书
logback 实现给变量指定默认值
2021/08/30 Java/Android
关于python中模块和重载的问题
2021/11/02 Python
使用Python获取字典键对应值的方法
2022/04/26 Python