我正在尝试用我计算过的数据制作电影。我正在使用ffmpeg编剧。当我在Spyder中开始动画时,它工作正常并且结束,但是当我尝试保存它时,它仅用于前30%的动画。如何保存整个动画?
这是一些代码(它很长); MM是存储矩阵的地方(其中1200个)。
import matplotlib
matplotlib.use("Agg")
from mpl_toolkits.mplot3d import axes3d
import matplotlib.animation as animation
import numpy as np
import matplotlib.pyplot as plt
import matplotlib.cm as cm
nx = 10
ny = 10
X=np.linspace(0, Lx, nx)
Y=np.linspace(0, Ly, ny)
Writer = animation.writers['ffmpeg']
writer = Writer(fps=15, metadata=dict(artist='Me'), bitrate=1)
plt.ion()
fig = plt.figure()
im = plt.contourf(X, Y, MM[0], np.linspace(T_ok,np.max(MM[-1]),150), cmap = cm.hot)
ax = fig.add_subplot(111, projection='3d')
plt.colorbar(im)
def anime(i):
ax.cla()
im = ax.contourf(X, Y, MM[i], np.linspace(T_ok,np.max(MM[-1]),150), cmap = cm.hot)
plt.title('%5.3f'%i)
return im,
anim = animation.FuncAnimation(fig, anime)
anim.save('anime.mp4', writer=writer)
编辑:我只是将帧设置为10000并且它正在工作,但我想知道原因。应该绘制1200个矩阵。
答案 0 :(得分:1)
这个问题已经很老了,但万一有人在寻找答案的时候偶然发现它(就像我一样),this comment让我明白,对于自定义帧生成器,你需要手动设置{{ 1}} save_count
成员使视频保存整个动画。
即,如果您想使用FuncAnimation
times
实例查看数组anim
,则需要:
FuncAnimation