#python #matplotlib
#python #matplotlib
Вопрос:
Я только что установил Python 2.7.1 на свой MacBook (работает под управлением Snow Leopard), и я также установил scipy superpack. NumPy и matplotlib импортируют просто отлично, но когда я вызываю pyplot.show() либо в интерпретаторе, либо в скрипте, всего на секунду появляется пустое окно, а затем IDLE перезапускается. График не отображается.
Я написал чрезвычайно простой тестовый скрипт, который показан на скриншоте ниже. Он создает два списка, печатает их, сопоставляет два списка друг с другом и выводит график в формате png. Это выполняется успешно, и вы можете видеть, что png действительно существует в соответствующей папке. Итак, pyplot.savefig() работает так, как ожидалось. Но затем я вызвал pyplot.show(), и вы можете видеть, что интерпретатор перезапущен.
Как я могу это исправить?
Обновить
Согласно предложению @Blender, я добавил plt.show () в скрипт и запустил его с терминала. На этот раз он выдал следующее сообщение об ошибке:
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
Комментарии:
1. Попробуйте запустить его из окна терминала. Просто введите
python
и сделайте то же самое, что вы делали для IDLE.
Ответ №1:
Вероятно, проблема связана с конфликтом между idle и серверной частью matplotlib. Вместо использования idle попробуйте использовать ipython, который входит в суперпак, и запустите ipython в режиме pylab, т.е. запустите ipython -pylab
из командной строки.
Ответ №2:
Просто используйте import pylab pylab.show(), это отобразит график в отдельном окне.