我想创建一个动画,在其中我更新两个不同的对象,例如A
和B
。通过使用具有不同FPS(其中一个为15 FPS,另一个为30 FPS)的不同设备来检索我收集到每个对象的数据。数据的长度为30秒,因此,如果要使用Matplotlib创建具有这样的持续时间和两个对象的动画,必须以15 FPS的速度A
和以30 FPS的速度B
进行动画处理
到目前为止,我能够同时创建两个对象的动画,但是我只能输入一个FPS。如果我输入15,则A
没问题,但是B
太慢,则两者都不同步。
我尝试过的内容的总结:
(...)
A, = plt.plot([], [], 'bo-', animated=True)
B, = plt.plot([], [], 'co-', animated=True)
def init():
ax.set_xlim(0, 80)
ax.set_ylim(-15, 15)
return A, B,
def update(frame):
"""Perform animation step"""
# Some arrays with data are xdata and ydata. In this case
# they are moving lines
A.set_data([0, xdata1[frame]], [0, ydata1[frame]])
B.set_data([0, xdata2[frame]], [0, ydata2[frame]])
return A, B,
ani = FuncAnimation(fig, update, frames=range(len(xdata1)), init_func=init, blit=True)
ani.save('video.mp4', fps=15, extra_args=['-vcodec', 'libx264'])
(...)
任何想法是否可以做到?即使我需要丢失一些以30FPS运行的对象的数据,也可以。谢谢!
答案 0 :(得分:0)
一个简单的“黑客”解决方案是复制A的每个元素,以便在A和B中具有相同数量的点。如果数据是numpy数组,则可以这样做
xdata1 = np.repeat(xdata1, 2)
ydata1 = np.repeat(ydata1, 2)