pyplot.show()无法显示图形,导致IDLE重启
我刚在我的MacBook上安装了Python 2.7.1(运行的是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
2 个回答
0
只需要使用以下代码:
import pylab
pylab.show()
这样就会在一个单独的窗口中显示图表。
1
这个问题可能是因为idle和matplotlib的后端之间发生了冲突。与其使用idle,不如试试ipython,它在superpack里有包含。你可以在命令行中用
ipython -pylab
来启动ipython,这样就可以进入pylab模式了。