解决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 相关文章推荐
xtree.js 代码
Mar 13 Javascript
jquery 模拟类搜索框自动完成搜索提示功能(改进)
May 24 Javascript
JavaScript代码简单实现求杨辉三角给定行的最大值
Oct 29 Javascript
JS连接SQL数据库与ACCESS数据库的方法实例
Nov 21 Javascript
JS获取图片lowsrc属性的方法
Apr 01 Javascript
JavaScript、tab切换完整版(自动切换、鼠标移入停止、移开运行)
Jan 05 Javascript
JS对大量数据进行多重过滤的方法
Nov 04 Javascript
JScript实现表格的简单操作
Aug 15 Javascript
原生JS实现旋转轮播图+文字内容切换效果【附源码】
Sep 29 Javascript
微信小程序传值以及获取值方法的详解
Apr 29 Javascript
使用imba.io框架得到比 vue 快50倍的性能基准
Jun 17 Javascript
vue实现评论列表功能
Oct 25 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
Mysql的常用命令
2006/10/09 PHP
一个php作的文本留言本的例子(三)
2006/10/09 PHP
PHP中使用hidef扩展代替define提高性能
2015/04/09 PHP
CentOS下搭建PHP环境与WordPress博客程序的全流程总结
2016/05/07 PHP
php compact 通过变量创建数组
2016/11/15 PHP
javascript编程起步(第七课)
2007/02/27 Javascript
javascript深入理解js闭包
2010/07/03 Javascript
JavaScript 模拟类机制及私有变量的方法及思路
2013/07/10 Javascript
关于jQuery中的each方法(jQuery到底干了什么)
2014/03/05 Javascript
jquery实现图片水平滚动效果代码分享
2015/08/26 Javascript
JS显示日历和天气的方法
2016/03/01 Javascript
javascript设计模式Constructor(构造器)模式
2016/08/19 Javascript
canvas 弹幕效果(实例分享)
2017/01/11 Javascript
深入理解vue $refs的基本用法
2017/07/13 Javascript
js简单的分页器插件代码实例
2019/09/11 Javascript
Vue 中使用lodash对事件进行防抖和节流操作
2020/07/26 Javascript
一篇超完整的Vue新手入门指导教程
2020/11/18 Vue.js
vue中父子组件的参数传递和应用示例
2021/01/04 Vue.js
python使用paramiko模块实现ssh远程登陆上传文件并执行
2014/01/27 Python
Python使用scrapy采集数据过程中放回下载过大页面的方法
2015/04/08 Python
Django使用Celery异步任务队列的使用
2018/03/13 Python
Python 新建文件夹与复制文件夹内所有内容的方法
2018/10/27 Python
Python 列表的清空方式
2020/01/13 Python
浅析matlab中imadjust函数
2020/02/27 Python
virtualenv介绍及简明教程
2020/06/23 Python
Python collections模块的使用方法
2020/10/09 Python
html5配合css3实现带提示文字的输入框(摆脱js)
2013/03/08 HTML / CSS
哈萨克斯坦最大的时装、鞋子和配饰在线商店:Lamoda.kz
2019/11/19 全球购物
Columbia Sportswear法国官网:全球户外品牌
2020/09/25 全球购物
自动化系在校本科生求职信
2013/10/23 职场文书
单位提档介绍信
2014/01/17 职场文书
大二法学专业职业生涯规划范文
2014/02/12 职场文书
《有趣的发现》教学反思
2014/04/15 职场文书
不知如何爱孩子,这些方法教会您
2019/08/06 职场文书
Python字符串对齐方法使用(ljust()、rjust()和center())
2021/04/26 Python
解决Mysql中的innoDB幻读问题
2022/04/29 MySQL