Python Matplotlib反向动画
使用Python Matplotlib反向动画,python,matplotlib,matplotlib-animation,Python,Matplotlib,Matplotlib Animation,使用animation.FuncAnimation时,是否可以在向前播放动画后以最佳方式反转动画?i、 e.相当于 FuncAnimation(..,frames=np.hstack([range(10),range(9)[::-1]])) 这会以相反的顺序重新绘制帧,当50%的数据完全相同时,会消耗图形计算和内存FuncAnimation确实有缓存机制,但它或任何其他动画是否有reverse=True?注意:我的所有数据都是预先计算的,并通过每个帧的简单索引进行检索。您是在(交互式?)mat
animation.FuncAnimation
时,是否可以在向前播放动画后以最佳方式反转动画?i、 e.相当于
FuncAnimation(..,frames=np.hstack([range(10),range(9)[::-1]]))
这会以相反的顺序重新绘制帧,当50%的数据完全相同时,会消耗图形计算和内存
FuncAnimation
确实有缓存机制,但它或任何其他动画是否有reverse=True
?注意:我的所有数据都是预先计算的,并通过每个帧的简单索引进行检索。您是在(交互式?)matplotlib后端中寻找解决方案,还是将此动画写入文件
后者要简单得多,因为您可以简单地使用ffmpeg
这样的工具来还原和附加最终的gif/movie文件。例如,见
如果您需要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对象,即:
pickle.dump(ax, file('frame_0.pickle', 'w'))
然后尝试在FuncAnimation的更新调用中重新加载那些pickle'd帧,如:
ax = pickle.load(file('frame_0.pickle'))
如果它是预计算的,为什么不使用呢?这正是这种活页书方法设计的应用程序。