Как удалить остаточный график в выводе Jupyter после отображения анимации matplotlib? - PullRequest
0 голосов
/ 11 мая 2018

Я хочу отобразить анимацию в Jupyter с помощью Matplotlib. Вот несколько простых примеров:

import numpy as np
import matplotlib.pyplot as plt
import matplotlib.animation as animation

fig, ax = plt.subplots()
line, = ax.plot(np.random.rand(10))
ax.set_ylim(0, 1)


def update(data):
    line.set_ydata(data)
    return line,


def data_gen():
    while True:
        yield np.random.rand(10)

ani = animation.FuncAnimation(fig, update, data_gen, interval=100);

from IPython.display import HTML
HTML(ani.to_jshtml())

Когда я запускаю код в первый раз (или после перезапуска ядра), я получаю то, что хочу: enter image description here

Однако, когда я запускаю тот же самый код во второй раз, в левом нижнем углу появляется остаток: enter image description here

Я заметил, что когда я добавляю %matplotlib inline вверху, то получаю плохой вывод даже после перезапуска ядра. Таким образом, я предполагаю, что я должен установить магическую команду %matplotlib по умолчанию вверху каждый раз, когда создаю анимацию, но я даже не могу найти, если %matplotlib имеет значение по умолчанию.


Я использую Анаконду. Вот мои версии: Конда версия: 4.4.10 Версия Python: Python 3.6.4 :: Anaconda, Inc. Версия IPython: 6.2.1 Версия Jupyter: 5.4.0

1 Ответ

0 голосов
/ 11 мая 2018

enter image description here

Я использовал plt.close (), чтобы остановить первый (нежелательный) график, и не видел проблем с запуском анимации в отдельной ячейке. Я считаю, что проблема похожа на те, которые указаны в комментариях, jupyter автоматически отображает нежелательный сюжет для первых двух строк - fig, ax = plt.subplots() line, = ax.plot(np.random.rand(10)). Я устал предложения, такие как использование точек с запятой в конце строки и несколько разных магических попыток, но не радость. Безусловно, появится более конкретное решение, но пока ....

...