只显示,不保存
以下代码即可实现动态地展示图片,但动态图每次只显示新的数据,不会保留旧的数据。
fig = plt.figure()
plt.ion()
plt.show()
ims = []
for i in range(1,10):
im = plt.plot(np.linspace(0, i,10), np.linspace(0, np.random.randint(i),10))
ims.append(im)
plt.draw()
plt.pause(0.2)
保存为gif
以下代码即可实现生成和保存动态图,但动态图每次只显示新的数据,不会保留旧的数据。
from matplotlib import pyplot as plt
from celluloid import Camera
fig = plt.figure()
camera = Camera(fig)
for i in range(10):
plt.plot([i] * 10)
camera.snap()
animation = camera.animate()
animation.save('celluloid_minimal.gif')
保存gif或MP4文件
以下代码即可实现生成和保存动态图,但动态图每次只显示新的数据,不会保留旧的数据。
import matplotlib.animation as animation
import matplotlib.pyplot as plt
ims = []
fig = plt.figure()
for i in range(1,10):
im = plt.plot(np.linspace(0, i,10), np.linspace(0, np.random.randint(i),10))
# 绘制散点图时,比较特殊需要调用findobj:im = plt.scatter(1,1).findobj()
ims.append(im)
ani = animation.ArtistAnimation(fig, ims, interval=500, repeat_delay=1000)
# ani.save("test.gif", writer='pillow')
Writer = animation.writers['ffmpeg'] # 需安装ffmpeg
writer = Writer(fps=15, metadata=dict(artist='Me'), bitrate=1800)
ani.save("movie.mp4",writer=writer)