Matplotlib при отладке в Pycharm: как отключить интерактивный режим?

Прежде всего, я работаю над консолью отладки Pycharm и хочу поставить подпись под моей диаграммой. Согласно этому ответу это может быть достигнуто путем:

plt.plot([2,5,1,2]
fig = plt.figure()
fig.text(.5, .05, "text", ha="center")
plt.show()

Тем не менее, это показывает мне сначала график, затем пустое окно (после ввода второй строки) и ничего позже.

Я понял, что это должно быть из-за интерактивного режима matplotlib, поэтому я отключил его, используя plt.ioff() в сеансе отладки, после которого plt.isinteractive() возвращается False, Тем не менее это не меняет его поведение и показывает сюжет сразу после plt.plot(...) команда.

Как ни странно когда я ставлю plt.ioff() в моем сценарии это игнорируется и plt.isinteractive() возвращается True,

import matplotlib.pyplot as plt

plt.ioff()
plt.plot([1,2,3,4,5])
print(plt.isinteractive())

Моя системная информация:

  • PyCharm CE 2017.3.2
  • macOS Sierra 10.12.6
  • Python 3.6.3 в среде анаконды

Кто-нибудь может воспроизвести это? Есть ли другой способ создания более сложных диаграмм из консоли отладки Pycharm? Я бы предпочел не менять свою среду разработки каждый раз, когда я хочу построить что-то более сложное.

1 ответ

Чтобы ответить на ваш вопрос: используйте другой (не интерактивный) бэкэнд:

import matplotlib
matplotlib.use('Agg')
import matplotlib.pyplot as plt

Ваш код, вероятно, не работает, потому что вы создали экземпляр фигуры после своего графика. Пытаться:

fig = plt.figure()
plt.plot([2,5,1,2]
fig.text(.5, .05, "text", ha="center")
plt.show()
Другие вопросы по тегам