matplotlib show()方法没有打开窗口

too*_*oom 7 python matplotlib show

我正在使用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
Run Code Online (Sandbox Code Playgroud)

因此,工作正常时plt.show不打开窗户或任何东西plt.savefig.

可能是什么问题呢?

wim*_*wim 15

Pyplot只会弹出一个数字窗口

matplotlib.rcParams['interactive'] == True
Run Code Online (Sandbox Code Playgroud)

如果您:

  • 以前plt.ion()在你的脚本中调用过,或者
  • 等价的,被称为matplotlib.interactive(True)
  • --pylab在命令行启动了一个带有选项的ipython会话.

当交互模式关闭时,您通常必须plt.show()明确调用以弹出图形窗口.这是因为我们经常想显示图形之前多次调用绘图来绘制各种内容(这是一个阻塞调用).


编辑(修改问题后):

plt.show()不弹出数字窗口的一个原因是您没有激活交互式后端.检查输出plt.get_backend()- 如果它返回'agg',例如,你有一个非交互式后端.

如果这是你的问题,你可以添加像

import matplotlib
matplotlib.use('MacOSX')
Run Code Online (Sandbox Code Playgroud)

在脚本开始时指定后端.这需要放在任何其他matplotlib相关导入之前.

要使此类更改成为永久更改,您可以通过修改matplotlib rcfile将不同的后端指定为默认值.通过调用找到该文件的位置matplotlib.matplotlib_fname().