我使用的是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.savefig正常工作时,plt.show不会打开窗口或其他任何东西。
可能的问题是什么?
发布于 2014-02-18 02:02:41
只有在以下情况下,Pyplot才会弹出图形窗口
matplotlib.rcParams['interactive'] == True在以下情况下会出现这种情况:
plt.ion(),plt.ion()称为matplotlib.interactive(True),或--pylab选项启动了ipython会话。当交互模式关闭时,通常必须显式调用plt.show()才能弹出图形窗口。这是因为在显示图形之前,我们经常需要多次调用plot来绘制各种东西(这是一个阻塞调用)。
编辑(修改问题后):
plt.show()没有弹出图形窗口的一个原因是你没有激活一个交互式的后端。检查plt.get_backend()的输出-如果它返回'agg',例如,您有一个非交互式后端。
如果这是您的问题,您可以添加像这样的行
import matplotlib
matplotlib.use('MacOSX')在脚本的开头指定后端。这需要放在任何其他matplotlib相关的导入之前。
要使这样的更改永久生效,您可以通过修改matplotlib by文件来指定一个不同的后端作为默认。通过调用matplotlib.matplotlib_fname()可以找到该文件的位置。
发布于 2022-01-24 16:29:56
对于我来说,我有一些这样的代码:
from matplotlib import pyplot as plt
figure = plt.Figure()
axes = figure.add_subplot()
axes.plot([1,2], [1,2])
plt.show()plt.show()没有阻塞或者做任何事情。如果我把代码改成这样,它就能工作了:
figure = plt.Figure()
plt.plot([1,2], [1,2])
plt.show()我的问题是我有多个图要在一个子图中显示,所以我需要轴。修复方法如下:
figure, axes = plt.subplots()
axes.plot([1,2], [1,2])
plt.show()https://stackoverflow.com/questions/21835847
复制相似问题