我正在使用mac,当我使用matplotlib执行以下操作时:
import matplotlib.pyplot as plt
import matplotlib.mlab as mlab
import pylab as P
...
plt.plot(x,y)
plt.show() <-- nothing happens
plt.savefig('figure.png') <-- works fine
因此,plt.show
在plt.savefig
正常工作时无法打开窗口或任何内容。
可能是什么问题?
答案 0 :(得分:14)
如果
,Pyplot只会弹出一个数字窗口matplotlib.rcParams['interactive'] == True
如果你是这样的话:
plt.ion()
或matplotlib.interactive(True)
或--pylab
选项启动了ipython会话。当交互模式关闭时,您通常必须明确调用plt.show()
以弹出图形窗口。这是因为我们经常想多次调用plot来绘制各种东西,然后再显示图形(这是一个阻塞调用)。
编辑(修改问题后):
plt.show()
没有弹出数字窗口的一个原因是你没有激活交互式后端。检查plt.get_backend()
的输出 - 如果它返回'agg'
,例如,您有一个非交互式后端。
如果这是您的问题,您可以添加
等行import matplotlib
matplotlib.use('MacOSX')
在脚本开头指定后端。这需要放在任何其他matplotlib相关导入之前。
要使此类更改成为永久更改,您可以通过修改matplotlib rcfile将默认的后端指定为默认值。通过调用matplotlib.matplotlib_fname()
可找到此文件的位置。