Как показать анимацию matplotlib в Colab, не показывая сюжет? - PullRequest
0 голосов
/ 22 марта 2020

В блокноте Google Colab я создаю анимацию matplotlib и отображаю ее как HTML5 видео. Последние строки моего сценария:

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

Видео выглядит хорошо, но затем я получаю другое изображение графика, отображаемого под видео (показывая то же самое, что и последний кадр видео). Если я позвоню plt.close() в конце, ни сюжет, ни видео не отобразятся. Как я могу показать видео без показа сюжета?

1 Ответ

0 голосов
/ 22 марта 2020

Краткий ответ: позвоните plt.close(), чтобы избежать отображения статического c изображения.

В блокнотах 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())
...