Matplotlib animation.save仅在从__main__调用时有效

时间:2019-07-03 08:59:34

标签: matplotlib animation

我编写了一个原则上可以做到这一点的函数:

def make_animation():
    nframes = 30
    arr = np.random.rand(30, 2, 2) * 255
    data = xr.DataArray(arr, [('time', np.arange(30)), ('x', [1, 2]), ('y', [0, 1])])
    fig, ax = plt.subplots()
    quad = data.isel(time=0).plot.imshow(origin='lower',
                                     vmin=np.nanmin(data.values),
                                     vmax=np.nanmax(data.values))

    def update(i):
        ti = data.isel(time=i)
        quad.set_array(ti.data)
        return quad

    anim = animation.FuncAnimation(fig, update,
                               frames=len(data.time), blit=False,
                               interval=50)
    anim.save('some_path', writer='ffmpeg', fps=2)

如果我从__main__调用任意数量的nframes,它就像一个咒语。但是,如果我将此函数导入另一个模块,它将写入输出文件,但是当frames太高时不会“填充”该文件。 (太高已经意味着50帧左右)。这是最后一条日志消息:

 matplotlib.animation: MovieWriter.grab_frame: Grabbing frame.

我已经尝试将save_count参数设置为时间轴的长度,但是它没有任何改变。知道如何解决这个问题吗?

0 个答案:

没有答案