解决echarts echarts数据动态更新和dataZoom被重置问题

网络编程 发布日期:2024/9/24 浏览次数:1

正在浏览:解决echarts echarts数据动态更新和dataZoom被重置问题

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被重置问题就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持。

一文看懂荣耀MagicBook Pro 16
荣耀猎人回归!七大亮点看懂不只是轻薄本,更是游戏本的MagicBook Pro 16.
人们对于笔记本电脑有一个固有印象:要么轻薄但性能一般,要么性能强劲但笨重臃肿。然而,今年荣耀新推出的MagicBook Pro 16刷新了人们的认知——发布会上,荣耀宣布猎人游戏本正式回归,称其继承了荣耀 HUNTER 基因,并自信地为其打出“轻薄本,更是游戏本”的口号。
众所周知,寻求轻薄本的用户普遍更看重便携性、外观造型、静谧性和打字办公等用机体验,而寻求游戏本的用户则普遍更看重硬件配置、性能释放等硬核指标。把两个看似难以相干的产品融合到一起,我们不禁对它产生了强烈的好奇:作为代表荣耀猎人游戏本的跨界新物种,它究竟做了哪些平衡以兼顾不同人群的各类需求呢?