def plots(tmp): plt.ion() for xyz in tmp: xa.append(xyz[2]) ya.append(xyz[0]) za.append(xyz[1]) plt.clf() fig = plt.gcf() ax = fig.gca(projection='3d') ax.view_init(elev=-142, azim=-21) ax.plot(xa, ya, za, 'b') plt.pause(0.1) plt.ioff() plt.show()我想把动态绘制的图保存为gif
时间: 2023-12-23 18:01:54 浏览: 146
UnitfulRecipes.jl:Unitful.jl数组的Plots.jl配方
你使用imageio库将每一帧保存为图片,然后使用Pillow库将这些图片合成为gif。以下是一个示例代码:
```
import matplotlib.pyplot as plt
import imageio
from PIL import Image
def plots(tmp):
xa, ya, za = [], [], []
plt.ion()
for i, xyz in enumerate(tmp):
xa.append(xyz[2])
ya.append(xyz[0])
za.append(xyz[1])
plt.clf()
fig = plt.gcf()
ax = fig.gca(projection='3d')
ax.view_init(elev=-142, azim=-21)
ax.plot(xa, ya, za, 'b')
plt.pause(0.1)
plt.ioff()
# 保存当前帧为图片
plt.savefig(f"frame_{i}.png")
# 合成图片为gif
images = []
for i in range(len(tmp)):
img = Image.open(f"frame_{i}.png")
images.append(img)
images[0].save('animation.gif', save_all=True, append_images=images[1:], duration=100, loop=0)
plt.show()
```
在调用`plots()`函数时,会在当前路径下生成很多png图片,然后这些图片会被合成为一个名为`animation.gif`的gif文件。你可以根据需要修改保存的路径和文件名、每一帧之间的间隔时间等参数。
阅读全文