python、celluloid、camera.snap() 不保存实际的图形状态

问题描述 投票:0回答:1

该程序实时绘制一组单参数直线。如果我想将程序使用camera.snap()输出的内容保存为gif,那么我不会得到想要的结果。问题是,为什么生成的 gif 与程序的输出不匹配?

import numpy as np
import matplotlib.pyplot as plt
from celluloid import Camera


def har_1(x, x0):
    return (x - x0)*(1 + np.cos(np.pi*x0/2)**2)/(2*np.cos(np.pi*x0/2))

fig1, ax1 = plt.subplots()
camera = Camera(fig1)

ax1.set_xlim(0,1)
ax1.set_ylim(0,5)
X0 = np.linspace(0, 10)
X = np.linspace(0, 1)


for x0 in X0:
    ax1.plot(X, har_1(X, x0))
    plt.pause(0.1)
    camera.snap()
    


animation = camera.animate()
animation.save('my_animation.gif')

这个想法是让相机保存我在运行程序时看到的帧,但它只保存最后添加的行。

python matplotlib-animation celluloid
1个回答
0
投票

脏溶液:

    import imageio
    images = []
    for filename in filenames:
        images.append(camera.snap())
    imageio.mimsave('my_animation.gif', images)
© www.soinside.com 2019 - 2024. All rights reserved.