我正在使用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
工作正常。
会有什么问题呢?
2条答案
按热度按时间olhwl3o21#
Pyplot仅在以下情况下才会弹出图形窗口:
如果您:
plt.ion()
,或者matplotlib.interactive(True)
,或--pylab
选项启动了一个ipython会话。当关闭交互模式时,通常需要显式调用
plt.show()
来弹出图形窗口。这是因为我们经常需要多次调用plot来绘制各种东西 * 然后 * 显示图形(这是一个阻塞调用)。plt.show()
没有弹出图形窗口的一个原因是你没有激活一个交互式后端。检查plt.get_backend()
的输出-如果它返回'agg'
,例如,你有一个非交互式后端。如果这是你的问题,你可以添加像这样的行
在脚本的开头指定后端。这需要放在任何其他matplotlib相关导入之前。
要使这样的更改永久化,您可以通过修改matplotlib rcfile来指定不同的后端作为默认值。该文件的位置通过调用
matplotlib.matplotlib_fname()
找到。cnwbcb6i2#
对于我来说,我有这样的代码:
plt.show()没有阻止或做任何事情。如果我将代码改为这样,那么它就可以工作了:
我的问题是,我有多个图显示在一个子图,所以我需要轴。这是修复: