2014-02-17 4 views
3

Я использую макинтош и когда я делаю следующее с Matplotlib: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 работает отлично.

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

+2

название говорит 'show()' dont work. вопросы говорят, что '.plot' не работает. Что он? 'plt.show()' - обычный способ открыть фигуру. – M4rtini

+0

Ах, извините, я сделал ошибку в моей цитате кода. Просто скорректировал его – toom

+0

Вы все еще говорите «Итак, plt.plot не открывает окно». Но вы имеете в виду «шоу()», верно? –

ответ

6

В pyplot, plt.plot только всплывающее окно фигурного если

`matplotlib.rcParams['interactive'] == True` 

Это тот случай, если вы:

  • есть предыдущий называется plt.ion() в сценарии или
  • эквивалентен, matplotlib.interactive(True), или
  • начал сеанс ipython с помощью опции --pylab в командной строке.

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


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

Одной из причин plt.show() не выскакивать окно фигуры является то, что вы не активировали интерактивный бэкенд. Какой выход вы получаете за plt.get_backend()? Например, если это 'agg', вы увидите такое поведение.

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

import matplotlib 
matplotlib.use('MacOSX') 

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

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

+0

проблема с томами, похоже, что 'show()' не открывает окно. Похоже, он не ожидает 'plot()', чтобы открыть его. –

+0

Все в порядке. Благодаря! – toom

Смежные вопросы