numpy - 如何使用 Matplotlib 或其他在动画图中绘制不规则采样的时间数据?
问题描述
我有以不规则时间步长记录的数据,我想将其显示为随着时间的推移滚动动画。例如,数据 A 可能具有时间点 [0.001, 0.004, 0.007, 0.009, ..., 0.97],而数据 B 可能在每个时间点大致相同,正负 0.02。
我想创建一个随时间更新的数据的滚动动画,但只有在该顶点的时间过去后才更新一条线的点/顶点。我想不出一个好方法让 numpy 说“对于这条线,只计算这个时间戳上的数据”。我想如果我能从 matplotlib 示例中找出一些东西,但一个完整的解决方案也会很好。
谢谢!
解决方案
我认为一种解决方案是将数据映射为一致的格式:
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. ])
您可能需要小心使用前瞻或后视值(这里是前瞻),但它会在新数据可用时更新。
推荐阅读
- css - 无法在 HTML/CSS 中添加本地图像作为背景图像
- node.js - 当行分隔符为换行符且 csv 数据中包含换行符时,如何使用 fs readfile 读取 csv?
- java - INSERT IGNORE 在 mysql 模式下使用 h2 引发主键冲突
- c# - Fluent Migration:如何在删除/更新语句中添加和/或子句
- javascript - 如何修复输入字段不通过多次更改更新 Firebase
- text - 如何仅删除 TextField 中没有文本的行?
- python - Pandas - 如何通过各种条件对多列进行“分组”?
- c# - 将年份值分配给 sbyte
- oracle - Oracle DB 12C 的 SQL Developer 连接错误
- hadoop - 同一个IBM账号下访问多个COS实例