Python FuncAnimation仅保存30%

时间:2015-05-27 21:24:58

标签: python animation matplotlib ffmpeg

我正在尝试用我计算过的数据制作电影。我正在使用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个矩阵。

1 个答案:

答案 0 :(得分:1)

这个问题已经很老了,但万一有人在寻找答案的时候偶然发现它(就像我一样),this comment让我明白,对于自定义帧生成器,你需要手动设置{{ 1}} save_count成员使视频保存整个动画。

即,如果您想使用FuncAnimation times实例查看数组anim,则需要:

FuncAnimation