Итак, я пытался заставить график обновлять каждую итерацию через al oop. Урезанная версия моего кода выглядит следующим образом:
1 import matplotlib.pyplot as plt 2 import numpy as np 3 4 x = np.linspace(0, 9, 10) 5 for j in range(10): 6 y = np.random.random(10) 7 plt.plot(x,y) 8 plt.show() 9 plt.pause(1) 10 plt.clf()
Моя проблема заключается в том, что я должен закрыть каждый график перед созданием следующего; похоже, что сюжет застрял в plt.show (), тогда как я ожидаю, что новый график будет заменять текущий каждую секунду без необходимости моего взаимодействия. Я рассмотрел следующие вопросы:
Когда использовать cla (), clf () или close () для очистки графика в matplotlib?
Python plt: закрывающая или четкая фигура не работает
Matplotlib pyplot show () не работает после закрытия
Но ни одно из решений не казалось работать на меня. Любая помощь будет оценена!
Вы должны установить интерактивный режим с помощью plt.ion () и использовать draw для обновления
import matplotlib.pyplot as plt import numpy as np plt.ion() fig=plt.figure() x = np.linspace(0, 9, 10) for j in range(10): y = np.random.random(10) plt.plot(x,y) fig.canvas.draw() plt.pause(1) plt.clf()
ссылка на учебник
Обратите внимание, что он может не работать на всех платформах; Я тестировал на Pythonista / ios, который не работал должным образом.
С
учебник по matplotlib
Примечание Интерактивный режим работает с подходящими бэкэндами в i python и в обычной оболочке python, но не работает в IDLE IDE. Если бэкэнд по умолчанию не поддерживает интерактивность, интерактивную бэкэнд можно явно активировать с помощью любого из методов, обсуждаемых в разделе Что такое бэкэнд?.