gpt4 book ai didi

python - 使用 .save() 方法和 matplotlib.animation.ArtistAnimation() 保存 .gif IndexError

转载 作者:行者123 更新时间:2023-12-05 07:13:36 24 4
gpt4 key购买 nike

我使用 plt.plot_surface()plt.scatter() 创建了一系列 3D 图像,如下所示: enter image description here

我想将它们另存为 .gif。正在关注this example我能够循环浏览视角并收集图像:

v_angles = [item for item in range(184,264,2)] + [item for item in range(264,183,-2)]

import matplotlib.pyplot as plt
import matplotlib.animation as animation
from matplotlib.animation import PillowWriter

ims = []
for angle in v_angles:
fig = plt.figure(figsize = (13,8))
ax = fig.add_subplot(111, projection='3d')
ax.plot_surface(X, Y, Z,
cmap=plt.cm.coolwarm,
alpha=0.67,
edgecolor='white',
linewidth=0.25,
zorder=-1)
im = plt.gcf()
ims.append([im])

将它们保存为 matplotlib.animation.ArtistAnimation() 对象:

ani = animation.ArtistAnimation(fig, 
ims,
interval=50,
blit=True,
repeat_delay=500)

看起来图像 (ims) 确实已收集并且 ani 已正确保存:

In[574]: ims
Out[575]:
[[<Figure size 936x576 with 1 Axes>],
[<Figure size 936x576 with 1 Axes>],
[<Figure size 936x576 with 1 Axes>],
...

In[576]: ani
Out[577]: <matplotlib.animation.ArtistAnimation at 0x107571fa90>

然而,当我尝试创建 .gif 时

writer = PillowWriter(fps=20)
ani.save("3d_scatter.gif", writer='imagemagick')

我得到以下 IndexError:

  File ".../anaconda3/lib/python3.7/site-packages/matplotlib/animation.py", line 575, in finish
self._frames[0].save(

IndexError: list index out of range

看起来 self._frames 应该包含项目但实际上没有。

有人知道怎么解决吗?谢谢。

最佳答案

您在代码的第一部分犯了一个小错误。应该是这样的:

for angle in v_angles:
fig = plt.figure(figsize = (13,8))
ax = fig.add_subplot(111, projection='3d')
im = ax.plot_surface(X, Y, Z, # <== NOTE THE CHANGE, I PREFIXED 'im = '.
cmap=plt.cm.coolwarm,
alpha=0.67,
edgecolor='white',
linewidth=0.25,
zorder=-1)
# im = plt.gcf() <== THIS LINE CAN BE REMOVED.
ims.append([im])

您的帖子已经发表快一年了,但我希望它仍然对您或其他人有所帮助。

关于python - 使用 .save() 方法和 matplotlib.animation.ArtistAnimation() 保存 .gif IndexError,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60103471/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com