Matplotlib не обновляет график при использовании в IDE (PyCharm)

1

Я новичок в python и только что установил pyCharm и попытался запустить тестовый пример, заданный по следующему вопросу: Как обновить сюжет в matplotlib?

В этом примере обновляется график для анимации движущегося синусоидального сигнала. Вместо ретрансляции он обновляет данные объекта сюжета. Он работает в командной строке, но этот показатель не отображается при запуске в PyCharm. Добавление plt.show(block=True) в конце script вызывает цифру, но на этот раз она не будет обновляться.

Любые идеи?

Теги:
matplotlib
plot
ide
show

2 ответа

1
Лучший ответ

Обновление связанного вопроса основано на предположении, что график встроен в приложение tkinter, что здесь не так.

Для участка обновления как отдельного окна вам необходимо включить интерактивный режим, т.е. plt.ion(). В PyCharm это должно быть включено по умолчанию.

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

import matplotlib.pyplot as plt
import numpy as np

x = np.linspace(0, 6*np.pi, 100)
y = np.sin(x)

plt.ion()

fig = plt.figure()
ax = fig.add_subplot(111)
line1, = ax.plot(x, y, 'r-') 
plt.draw()

for phase in np.linspace(0, 10*np.pi, 500):
    line1.set_ydata(np.sin(x + phase))
    plt.draw()
    plt.pause(0.02)

plt.ioff()
plt.show()
  • 0
    Спасибо, я понял!
  • 0
    Будьте здоровы. Мне понадобился возраст, чтобы найти такой ответ!
2

Как отмечено ImportanceOfBeingErnest в отдельном вопросе, на некоторых системах жизненно важно добавьте эти две строки в начало кода из примера OP:

import matplotlib
matplotlib.use("TkAgg")

Это может сделать ненужные вызовы plt.ion и plt.ioff; код теперь работает без них в моей системе.

  • 1
    Работает как чудо ... Одно дополнение: убедитесь, что вы не добавляете переменную окружения "DISPLAY = true" в конфигурацию запуска PyCharm, так как это не будет работать вместе.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню