我每秒接收大约 10 次流式传感器结果作为点对(时间、值)。我想连续绘制最后 30 秒的结果(~300 点)。我执行以下操作:使用 animation.FuncAnimation 机制。每当 FuncAnimation 启动时,我都会从队列中读取最新结果,丢弃最旧的结果并使用 set_data(time_array,value_array) 重新绘制绘图。它运作良好,但有一个很大的缺点:我必须每次都使用 set_xlim() 来使 x 轴调整到新的时间值。有什么优雅的方法吗?我想使用时间轴为 [0,30] 的相对坐标,但找不到优雅的方法。
2 回答
0
你可能应该使用
ax.autoscale()
将轴缩放ax
到其新内容。
于 2018-06-20T18:06:33.277 回答
0
我会创建一个仅包含最后 300 个点的第二个数组。类似于以下内容:
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
,但您也有一个 1D 数组,其中仅包含可以绘制的最后 300 个点,range(len(tempData))
而不是根据时间绘制。
于 2018-06-20T18:29:37.367 回答