解决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延迟执行实现方法(setTimeout)
Dec 30 Javascript
Jquery原生态实现表格header头随滚动条滚动而滚动
Mar 18 Javascript
js下将阿拉伯数字每三位一逗号分隔(如:15000000转化为15,000,000)
Jun 02 Javascript
JQuery跳出each循环的方法
Apr 16 Javascript
javascript实现表单提交后,提交按钮不可用的方法
Apr 18 Javascript
jQuery实现网页顶部固定导航效果代码
Dec 24 Javascript
JavaScript Ajax编程 应用篇
Jul 02 Javascript
AngularJS自定义指令之复制指令实现方法
May 18 Javascript
React-Native之定时器Timer的实现代码
Oct 04 Javascript
Vue表单及表单绑定方法
Sep 04 Javascript
vue中slot(插槽)的介绍与使用
Nov 12 Javascript
vue计算属性computed、事件、监听器watch的使用讲解
Jan 21 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 程序员也要学会使用“异常”
2009/06/16 PHP
PHP mb_convert_encoding文字编码的转换函数介绍
2011/11/10 PHP
php不允许用户提交空表单(php空值判断)
2013/11/12 PHP
php7下的filesize函数
2019/09/30 PHP
Avengerls vs Newbee BO3 第三场2.18
2021/03/10 DOTA
Prototype使用指南之base.js
2007/01/10 Javascript
Javascript base64编码实现代码
2011/12/02 Javascript
ExtJs默认的字体大小改变的几种方法(自己整理)
2013/04/18 Javascript
查看大图功能代码jquery版
2013/11/05 Javascript
javascript对话框使用方法(警告框 javascript确认框 提示框)
2014/01/07 Javascript
JavaScript中的small()方法使用详解
2015/06/08 Javascript
javascript+ajax实现产品页面加载信息
2015/07/09 Javascript
JavaScript匿名函数之模仿块级作用域
2015/12/12 Javascript
JS 实现可停顿的垂直滚动实例代码
2016/11/23 Javascript
前端构建工具之gulp的语法教程
2017/06/12 Javascript
利用JS实现scroll自定义滚动效果详解
2017/10/17 Javascript
代码详解Vuejs响应式原理
2017/12/20 Javascript
Vue打包后出现一些map文件的解决方法
2018/02/13 Javascript
JSONP原理及应用实例详解
2018/09/13 Javascript
vue中导出Excel表格的实现代码
2018/10/18 Javascript
微信小程序订阅消息(java后端实现)开发
2020/06/01 Javascript
[10:18]2018DOTA2国际邀请赛寻真——找回自信的TNCPredator
2018/08/13 DOTA
[53:03]Optic vs TNC 2018国际邀请赛小组赛BO2 第一场 8.17
2018/08/18 DOTA
[11:42]2018DOTA2国际邀请赛寻真——OG卷土重来
2018/08/17 DOTA
[47:43]Alliance vs KG 2019国际邀请赛小组赛 BO2 第一场 8.16
2019/08/18 DOTA
详解如何将python3.6软件的py文件打包成exe程序
2018/10/09 Python
想学python 这5本书籍你必看!
2018/12/11 Python
python爬虫 模拟登录人人网过程解析
2019/07/31 Python
python实现京东订单推送到测试环境,提供便利操作示例
2019/08/09 Python
Python 生成器,迭代,yield关键字,send()传参给yield语句操作示例
2019/10/12 Python
台湾东南旅游社网站:东南旅游
2019/02/11 全球购物
元旦联欢会策划方案
2014/06/11 职场文书
义和团口号
2014/06/17 职场文书
委托书如何写
2014/08/30 职场文书
十岁生日答谢词
2015/01/05 职场文书
2015年中职班主任工作总结
2015/05/25 职场文书