首页 > 解决方案 > 如何使用 Matplotlib 或其他在动画图中绘制不规则采样的时间数据?

问题描述

我有以不规则时间步长记录的数据,我想将其显示为随着时间的推移滚动动画。例如,数据 A 可能具有时间点 [0.001, 0.004, 0.007, 0.009, ..., 0.97],而数据 B 可能在每个时间点大致相同,正负 0.02。

我想创建一个随时间更新的数据的滚动动画,但只有在该顶点的时间过去后才更新一条线的点/顶点。我想不出一个好方法让 numpy 说“对于这条线,只计算这个时间戳上的数据”。我想如果我能从 matplotlib 示例中找出一些东西,但一个完整的解决方案也会很好。

谢谢!

标签: numpymatplotlibanimation

解决方案


我认为一种解决方案是将数据映射为一致的格式:

A = np.array([1, 1.5, 4.5, 5])
B = np.array([1, 2.5, 3.5, 5])

scroll = np.linspace(1,5,11)
A_idx = np.searchsorted(A, scroll) 
B_idx = np.searchsorted(B, scroll)

>>> scroll
array([1. , 1.4, 1.8, 2.2, 2.6, 3. , 3.4, 3.8, 4.2, 4.6, 5. ])
>>> A[A_idx]
array([1. , 1.5, 4.5, 4.5, 4.5, 4.5, 4.5, 4.5, 4.5, 5. , 5. ])
>>> B[B_idx]
array([1. , 2.5, 2.5, 2.5, 3.5, 3.5, 3.5, 5. , 5. , 5. , 5. ])

您可能需要小心使用前瞻或后视值(这里是前瞻),但它会在新数据可用时更新。


推荐阅读