matplotlib animation.save 不制作视频

matplolib animation.save dont't produce a video

我正在尝试保存由 :

制作的动画
def aff(self,frame,attr,vmin=None,vmax=None,born=True):
        val = getattr(self,attr)
        if born:
            plt.imshow(val[frame],extent=(0,self.L,self.L,0),cmap="seismic",vmin=vmin,vmax=vmax)
        else:
            plt.imshow(val[frame],extent=(0,self.L,self.L,0),cmap="seismic")
        plt.colorbar()

def animation(self,attr,fps=5,born=True,begin=0):
        def func(frame):
            plt.clf()
            self.aff(frame,attr,vmin,vmax,born)
        
        val = getattr(self,attr)
        if born:
            vmin = np.min(val)
            vmax = np.max(val)
        fig = plt.figure()
        return anim.FuncAnimation(fig,func,np.arange(begin,val.shape[0]),interval=1/fps*1000)

但是当我执行时:

ani.save('animation.mp4')

或:

ani.save('animation.gif',writer='pillow')

代码运行好久好久,最后只显示最后一张图。 返回一个 mp4 或 gif 视频,但在整个视频中它是相同的图像(不是第一张或最后一张图像!)。

没有保存的动画效果。

我有办法。

因为我这个代码在shell:

ani=fluid.animation('omega',fps=10)

我关闭 window 并且 运行 :

ani.save('vortex2.mp4')

但是如果我们关闭动画,“ani”对象就无效了。 我们必须做的:

ani=fluid.animation('omega',fps=10)
ani.save('vortex2.mp4')