Построение графиков изменения с помощью matplotlib - PullRequest
0 голосов
/ 08 марта 2020

Итак, я пытался заставить график обновлять каждую итерацию через 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 () не работает после закрытия

Но ни одно из решений не казалось работать на меня. Любая помощь будет оценена!

1 Ответ

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

Вы должны установить интерактивный режим с помощью 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. Если бэкэнд по умолчанию не поддерживает интерактивность, интерактивную бэкэнд можно явно активировать с помощью любого из методов, обсуждаемых в разделе Что такое бэкэнд?.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...