метод matplotlib show() не открывает окно

Я использую mac, и когда я делаю следующее С matplotlib:

import matplotlib.pyplot as plt
import matplotlib.mlab as mlab
import pylab as P

...
plt.plot(x,y)  
plt.show() <-- nothing happens
plt.savefig('figure.png') <-- works fine

и plt.show не открывает окно или что-нибудь в то время как plt.savefig работает нормально.

в чем может быть проблема?

1 ответов


Pyplot появится только окно фигуры, если

matplotlib.rcParams['interactive'] == True

это так, если вы:

  • ранее назывался plt.ion() в вашем скрипте или
  • эквивалентно, называется matplotlib.interactive(True) или
  • начал сеанс ipython с в командной строке.

когда интерактивный режим выключен, вы обычно должны позвонить plt.show() явно, чтобы сделать рисунок окно всплывающее. Это потому, что мы часто хотите вызвать сюжет несколько раз, чтобы нарисовать различные вещи до отображение фигуры (которая является блокирующим вызовом).


Edit (после того, как вопрос был изменен):

одной из причин plt.show() не всплывающее окно рисунка - это то, что вы не активировали интерактивный бэкэнд. Проверьте выход plt.get_backend() - если она возвращает 'agg', например, у вас не интерактивном интерфейсе.

если это ваш проблема, вы можете добавить такие строки, как

import matplotlib
matplotlib.use('MacOSX')

в начале вашего скрипта указать бэкэнд. Это должно быть размещено перед любым другим импортом, связанным с matplotlib.

чтобы сделать такое изменение постоянным, вы можете указать другой бэкэнд по умолчанию, изменив свой rcfile matplotlib. Расположение этого файла можно найти по телефону matplotlib.matplotlib_fname().