Динамическое обновление графика в ноутбуке iPython

Как упоминалось в этом вопросе , я пытаюсь обновить график динамически в ноутбуке iPython (в одной ячейке). Разница в том, что я не хочу строить новые строки, но мои x_data и y_data растут на каждой итерации некоторого цикла.

Я бы хотел:

import numpy as np import time plt.axis([0, 10, 0, 100]) # supoose I know what the limits are going to be plt.ion() plt.show() x = [] y = [] for i in range(10): x = np.append(x, i) y = np.append(y, i**2) # update the plot so that it shows y as a function of x time.sleep(0.5) 

но я хочу, чтобы у сюжета была легенда, и если я это сделаю

 from IPython import display import time import numpy as np plt.axis([0, 10, 0, 100]) # supoose I know what the limits are going to be plt.ion() plt.show() x = [] y = [] for i in range(10): x = np.append(x, i) y = np.append(y, i**2) plt.plot(x, y, label="test") display.clear_output(wait=True) display.display(plt.gcf()) time.sleep(0.3) plt.legend() 

Я заканчиваю легендой, которая содержит 10 предметов. Если я положил plt.legend() внутри цикла, легенда растет на каждой итерации … Любое решение?

One Solution collect form web for “Динамическое обновление графика в ноутбуке iPython”

В настоящее время вы создаете новый объект Axes за каждый раз, когда вы plt.plot в цикле.

Итак, если вы очистите текущую ось ( plt.gca().cla() ), прежде чем использовать plt.plot и поместите легенду в цикл, она работает без легенды, растущей каждый раз:

 import numpy as np import time from IPython import display x = [] y = [] for i in range(10): x = np.append(x, i) y = np.append(y, i**2) plt.gca().cla() plt.plot(x,y,label='test') plt.legend() display.clear_output(wait=True) display.display(plt.gcf()) time.sleep(0.5) 

EDIT: Как заметил @tcaswell в комментариях, использование команды %matplotlib notebook magic magic дает вам живую фигуру, которая может обновляться и перерисовываться.

  • Импортирование matplotlib.pyplot и BeautifulSoup с помощью cxFreeze
  • Управление динамическим построением в модуле анимации matplotlib
  • Цвета графического изображения Matplotlib появляются темнее обычного
  • pyplot объединяет многострочные метки в легенде
  • Простая настройка диаграммы matplotlib / pandas (метки, тики и т. Д.)
  • Может ли кто-нибудь объяснить эту матоплатину pcolormesh quirk?
  • RuntimeError: базовый объект C / C ++ был удален при сохранении и последующем закрытии рисунка пистолета
  • Matplotlib: Можно ли построить линию от одного набора осей к другому?
  • Python - лучший язык программирования в мире.