0

使用 时animation.FuncAnimation,是否可以在动画正向播放后以最佳方式反转动画?即相当于

FuncAnimation(.., frames=np.hstack([range(10), range(9)[::-1]]))

这会以相反的顺序重绘帧,当 50% 的数据完全相同时会消耗绘图计算和内存。FuncAnimation确实有一个缓存机制,但它或任何其他animation.有一个reverse=True?请注意,我的所有数据都是通过每个帧的简单索引预先计算和检索的。

4

1 回答 1

1

您是在(交互式?)matplotlib 后端寻找解决方案,还是将此动画写入文件?

后者要简单得多,因为您可以简单地使用类似ffmpeg还原和附加最终 gif/电影文件的工具。例如,请参阅此答案

如果您需要 matplotlib 中的解决方案那么我想您需要将所有需要的计算存储在单独的对象中(例如,创建一个字典frames = { 0: {"x":0, "y":1, … } },然后告诉 FuncAnimation 使用简单的“查找”函数进行更新,例如:

def update(frame):
    xdata = frames[frame]["x"]
    ydata = frames[frame]["y"]
    ln.set_data(xdata, ydata)
    return ln,

第三种选择是将您的轴存储为pickle'd对象,即:

pickle.dump(ax, file('frame_0.pickle', 'w'))

然后尝试在 FuncAnimation 的更新调用中重新加载那些腌制的帧,例如:

ax = pickle.load(file('frame_0.pickle'))
于 2020-12-08T08:00:05.213 回答