解决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第一课
Feb 27 Javascript
jQuery 剧场版 你必须知道的javascript
May 27 Javascript
js实现适用于素材网站的黑色多级菜单导航条效果
Aug 24 Javascript
JS基于myFocus库实现各种功能的tab选项卡切换效果
Sep 19 Javascript
javascript常用函数(1)
Nov 04 Javascript
Javascript类型转换的规则实例解析
Feb 23 Javascript
浅谈javascript中new操作符的原理
Jun 07 Javascript
利用浮层使select不可选的实现方法
Dec 03 Javascript
Angular2 Service实现简单音乐播放器服务
Feb 24 Javascript
详解在React中跨组件分发状态的三种方法
Aug 09 Javascript
JavaScript数据结构与算法之检索算法实例分析【顺序查找、最大最小值、自组织查询】
Feb 22 Javascript
Vue安装浏览器开发工具的步骤详解
May 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
php下正则来匹配dede模板标签的代码
2010/08/21 PHP
PHP stream_context_create()作用和用法分析
2011/03/29 PHP
discuz免激活同步登入代码修改方法(discuz同步登录)
2013/12/24 PHP
设置php页面编码的两种方法示例介绍
2014/03/03 PHP
php实现表单多按钮提交action的处理方法
2015/10/24 PHP
laravel 5.4 + vue + vux + element的环境搭配过程介绍
2018/04/26 PHP
分析php://output和php://stdout的区别
2018/05/06 PHP
Laravel5框架添加自定义辅助函数的方法
2018/08/01 PHP
javascript multibox 全选
2009/03/22 Javascript
从jquery的过滤器.filter()方法想到的
2013/09/29 Javascript
JS对文本框值的判断示例
2014/03/10 Javascript
使用nodejs、Python写的一个简易HTTP静态文件服务器
2014/07/18 NodeJs
JavaScript学习笔记整理之引用类型
2016/01/22 Javascript
js 获取经纬度的实现方法
2016/06/20 Javascript
AngularJS实现ajax请求的方法
2016/11/22 Javascript
JavaScript创建对象的七种方式(推荐)
2017/06/26 Javascript
iframe与主框架跨域相互访问实现方法
2017/09/14 Javascript
zTree 树插件实现全国五级地区点击后加载的示例
2018/02/05 Javascript
Vue组件中的data必须是一个function的原因浅析
2018/09/03 Javascript
Vue+Element UI+Lumen实现通用表格分页功能
2019/02/02 Javascript
jQuery提示框插件SweetAlert用法分析
2019/08/05 jQuery
weui中的picker使用js进行动态绑定数据问题
2019/11/06 Javascript
JS数组的常用10种方法详解
2020/05/08 Javascript
在Python的循环体中使用else语句的方法
2015/03/30 Python
Kali Linux安装ipython2 和 ipython3的方法
2019/07/11 Python
Django ForeignKey与数据库的FOREIGN KEY约束详解
2020/05/20 Python
利用Python实现字幕挂载(把字幕文件与视频合并)思路详解
2020/10/21 Python
canvas实现飞机打怪兽射击小游戏的示例代码
2018/07/09 HTML / CSS
计算机毕业生自荐信范文
2014/03/23 职场文书
2014年幼儿园重阳节活动方案
2014/09/16 职场文书
五年级下册复习计划
2015/01/19 职场文书
教师党员承诺书2015
2015/01/21 职场文书
小区环境卫生倡议书
2015/04/29 职场文书
先进工作者主要事迹材料
2015/11/03 职场文书
Python图片检索之以图搜图
2021/05/31 Python
JS数组去重详情
2021/11/07 Javascript