我在Mac OS X Yosemite上运行Python v2.7和matplotlib v1.5.0。到目前为止,我能够在交互式解释器中运行我的脚本,显示一个情节,然后手动杀死窗口。例如
import numpy as np
x = np.arange(1,10)
y = np.arange(1,10)
plt.plot(x,y)
plt.show()
这曾经很好用。窗口将关闭,我将返回提示。但是,现在当我点击红色X关闭窗口时,窗口仍保持打开状态。我的命令提示符返回并正常工作,但窗口卡住了,我看到旋转的沙滩球在它上面。
(请注意,光标没有出现在图像中,但是您可以看到红色X显示为灰色,因为我已经关闭但它被卡住了。)
直到我第二次运行脚本第一个窗口关闭时,我才会遇到同样问题的第二个打开的情节。我有点困惑,因为这只发生在最近。到目前为止,窗户将关闭。
这不是一个大问题,因为Python仍在运行,我仍然可以制作新的情节,但我很好奇为什么窗口会突然打开。有什么建议吗?
更新
我通过切换交互式后端解决了这个问题。 Qt4Agg或TkAgg作为交互式后端解决了这个问题。但问题仍然是为什么macosx和CocoaAgg后端显示出这种行为。
答案 0 :(得分:9)
对于永久性解决方案(我不想每次打开ipython时都不必切换后端),您可以修改matplotlibrc
。
可以更改各种matplotlibrc
个文件(即仅用于本地目录,或全局等)。要查找为ipython会话加载的配置文件,请使用matplotlib.matplotlib_fname()
。这就是我得到的:
In [1]: import matplotlib
In [2]: matplotlib.matplotlib_fname()
Out[2]: u'/usr/local/lib/python2.7/site-packages/matplotlib/mpl-data/matplotlibrc'
打开rc文件并更改行:
backend : macosx
阅读:
backend : Qt4Agg
为我做了诀窍。
答案 1 :(得分:5)
我通过切换交互式后端解决了这个问题。 Qt4Agg或TkAgg作为交互式后端解决了这个问题。