该程序实时绘制一组单参数直线。如果我想将程序使用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')
这个想法是让相机保存我在运行程序时看到的帧,但它只保存最后添加的行。
脏溶液:
import imageio
images = []
for filename in filenames:
images.append(camera.snap())
imageio.mimsave('my_animation.gif', images)