首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >绘制流式数据的滑动时间窗口

绘制流式数据的滑动时间窗口
EN

Stack Overflow用户
提问于 2018-06-21 01:57:05
回答 2查看 109关注 0票数 0

我以点对(时间、值)的形式每秒接收大约10次流传感器结果。我想连续绘制最后30秒的结果(~300分)。我做了以下工作:使用animation.FuncAnimation机制。每当FuncAnimation开始工作时,我都会从队列中读取最新的结果,丢弃最旧的结果,并使用set_data(time_array,value_array)重新绘制绘图。它工作得很好,但有一个很大的缺点:我每次都必须使用set_xlim()来使x轴适应新的时间值。有没有一种优雅的方式绕过它?我想使用时间轴为0,30的相对坐标,但找不到一种优雅的方法。我总是可以对当前窗口中的所有300个点进行时移,以便它们从0开始,在30左右结束,但这是非常低效的,必须在添加新数据点和丢弃旧数据点时进行。

EN

回答 2

Stack Overflow用户

发布于 2018-06-21 02:06:33

您可能应该使用

代码语言:javascript
复制
ax.autoscale()

缩放轴ax以适应其新内容。

票数 0
EN

Stack Overflow用户

发布于 2018-06-21 02:29:37

我将创建一个仅包含最后300个点的第二个数组。类似于以下内容:

代码语言:javascript
复制
import numpy as np

fullArray = (time, value)
tempArray = fullArray

while takingData:
    lastTake = (time, value)
    fullArray = np.vstack((fullArray, lastTake))
    try:
        tempArray = np.hstack((fullArray[ -299: ,1 ], lastTake[1]))
    except IndexError:
        tempArray = np.hstack((fullArray[:,1], lastTake[1]))

这样,您的所有数据都保存在fullArray中,但也有一个只包含最后300个点的一维数组,这些点可以根据range(len(tempData))绘制,而不是根据时间绘制。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/50954394

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档