Echarts动画效果:实现数据左右移动

1、业务背景

  图形实时从后台获取数据,让图形从最右边出现,每隔一秒向左移一位,当最左边的数据移到Y轴时,最左边的数据移出屏幕,最右边增加一个数。实现一个从右往左动画的效果

2、先看下项目中的demo解决实例

  让数据从最右边出,不重复说了,利用数组的length特性

mounted(){
    this.series.length = 50
    this.fetchData();
}

  其次就是对数据的处理:当数组长度大于设定的固定值时,删除数组的第一个元素;然后将获取到的值push到数组

复制代码
fetchData(){
    this.timer = setInterval(_ => {
        getMonitorApi().then((res) => {
            if(res.status === 200){
                if(this.series.length > 50){
                    this.series.shift()
                }
                this.series.push(res.data.series.data)
                this.xData = res.data.xData
                this.drawLine()
            }
        })
    },2000)
},
复制代码

3、解决方案思路

(1)首先第一步考虑的是,获取到这个series的data数组:

var data= option.series[0].data;//获取数组  

(2)其次是做一个定时器,随机生成一个随机数,push到数组,并且删除数组的第一个元素:

    window.setInterval(function(){  
        data.shift();  
        var randomNum=parseInt(Math.random()*400)  
        data.push(randomNum); 
    },1000);  

(3)然后是写一个刷新的函数,并把新的数据绑定到ECharts中:

    function refreshData(){  
        var option = myChart.getOption();//获取页面的option  
        option.series[0].data = data;//设置新的数据  
        myChart.setOption(option);//绑定到ECharts  
    }

(4)最后在定时器里调用刷新函数,使数据产生移动效果

复制代码
    window.setInterval(function(){  
        data.shift();  
        var randomNum=parseInt(Math.random()*400)  
        data.push(randomNum);  
        console.log(data);  
        refreshData();  
    },1000);  
复制代码

  补充:因为固定数组里面只有固定的显示个数,所以删除第一个,push加入最后一个,这样就产生了移动的效果

posted @   古兰精  阅读(15180)  评论(0编辑  收藏  举报
编辑推荐:
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
阅读排行:
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 单元测试从入门到精通
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 上周热点回顾(3.3-3.9)
· winform 绘制太阳,地球,月球 运作规律
点击右上角即可分享
微信分享提示