当前位置: 代码迷 >> python >> 如何在 Colab 中显示 matplotlib 动画而不显示情节?
  详细解决方案

如何在 Colab 中显示 matplotlib 动画而不显示情节?

热度:78   发布时间:2023-07-16 11:12:57.0

在 Google Colab 笔记本中,我正在构建一个 matplotlib 动画并将其显示为 HTML5 视频。 我的脚本的最后几行是:

# ...
anim = animation.ArtistAnimation(plt.gcf(), frames,
                                 interval=250, blit=True, repeat=False)
HTML(anim.to_html5_video())

视频看起来不错,但随后我在视频下方显示了另一张图(显示与视频的最后一帧相同的内容)。 如果我在最后调用plt.close() ,则不会显示情节和视频。 如何在不显示情节的情况下显示视频?

简短回答:调用plt.close()以避免显示静态图像。

Jupyter 笔记本(包括 Colab)将自动显示在单元格中创建的任何 matplotlib 图像,无论单元格中的显式打印或显示语句如何。 你可以通过运行看到这一点

plt.plot([1, 2, 3])
print('done')

单元格输出将包含隐式显示的图表和显式显示的文本。

您可以通过在单元格结束之前关闭图表来防止这种隐式显示:

plt.plot([1, 2, 3])
plt.close()
print('done')

在您的情况下,您希望显示从图表构建的 HTML 动画,而不是图表本身。 它看起来像这样:

anim = animation.ArtistAnimation(plt.gcf(), frames,
                                 interval=250, blit=True, repeat=False)
plt.close()
HTML(anim.to_html5_video())