2012-03-17 6 views
15

Я хочу, чтобы команда matplotlib «show» возвращалась в командную строку при отображении сюжета. Большинство других пакетов сюжетов, таких как R, делают это. Но pylab висит, пока окно графика не закрывается. Например:pylab matplotlib «show» ждет, пока окно не закроется

import pylab 
x = pylab.arange(0, 10, 0.1) 
y = pylab.sin(x) 
pylab.plot(x,y, 'ro-') 
pylab.show() # Python hangs here until the plot window is closed 

Я хотел бы иметь возможность просматривать сюжет при выполнении запросов в командной строке. Я запускаю Debian с помощью python 2.6.6. Мой ~/.matplotlib/matplotlibrc содержит

backend  : GTKAgg 

Спасибо!

+2

Попробуйте использовать [IPython] (http://ipython.org/) –

+0

, вы имеете в виду 'ipython -pylab', чтобы получить многопоточность. –

ответ

22

Добавить pylab.ion() (interactive mode) перед тем, как позвонить pylab.show(). Это заставит пользовательский интерфейс работать в отдельном потоке, и вызов на show будет немедленно возвращен.

+1

Спасибо. Работает хорошо. С помощью 'ion()' команда 'show()' больше не нужна. – Sullivan

+1

Он действительно сразу возвращается, но почему фигура висит там, показывая «Не реагируя», –

5

Вы должны запустить его как

$ ipython --pylab 

и запустить свой код в

In [8]: x = arange(0,10,.1) 

In [9]: y = sin(x) 

In [10]: plot(x,y,'ro-') 

Out[10]: [<matplotlib.lines.Line2D at 0x2f2fd50>] 

In [11]: 

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

+0

Спасибо. Это хорошо работает. – Sullivan

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