Я только что установил Python 2.7.1 на свой MacBook (работает Snow Leopard), и я также установил scipy superpack, NumPy и matplotlib импортируют просто отлично, но когда я вызываю pyplot.show(), либо в интерпретаторе, либо в script, пустое окно появляется всего лишь секунду, а затем снова запускается IDLE. График не отображается.
Я написал чрезвычайно простой тест script, который показан на скриншоте ниже. Он создает два списка, печатает их, отображает два списка друг против друга и выводит график на png. Это происходит успешно, и вы можете видеть, что png действительно существует в соответствующей папке. Поэтому pyplot.savefig() работает так, как ожидалось. Но затем я вызывал pyplot.show(), и вы можете видеть, что интерпретатор перезагрузился.
Как я могу это исправить?
В соответствии с предложением @Blender я добавил plt.show() в script и запускал его из терминала. На этот раз появилось следующее сообщение об ошибке:
Exception in Tkinter callback
Traceback (most recent call last):
File "/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/lib-tk/Tkinter.py", line 1410, in __call__
return self.func(*args)
File "/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/matplotlib-1.1.0-py2.6-macosx-10.6-universal.egg/matplotlib/backends/backend_tkagg.py", line 235, in resize
self.show()
File "/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/matplotlib-1.1.0-py2.6-macosx-10.6-universal.egg/matplotlib/backends/backend_tkagg.py", line 239, in draw
tkagg.blit(self._tkphoto, self.renderer._renderer, colormode=2)
File "/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/matplotlib-1.1.0-py2.6-macosx-10.6-universal.egg/matplotlib/backends/tkagg.py", line 19, in blit
tk.call("PyAggImagePhoto", photoimage, id(aggimage), colormode, id(bbox_array))
TclError
Проблема, вероятно, связана с конфликтом между простоями и бэкэдом matplotlib. Вместо использования простоя попробуйте использовать ipython, который включен в суперпак, и запустите ipython в режиме pylab, т.е. Запустите ipython -pylab
в командной строке.
Просто используйте import pylab pylab.show() это отобразит график в отдельном окне.
python
и сделайте то же самое, что вы сделали для IDLE.