Python Matplotlib图不';如果未调用show,则无法正确渲染

Python Matplotlib图不';如果未调用show,则无法正确渲染,python,matplotlib,Python,Matplotlib,因此,我将matlibplot与Python 2.7.5::Anaconda 1.7.0(64位)一起使用 我的matlibplot.rc文件中唯一未注释的行是: figure.figsize : 10, 5 # figure size in inches figure.dpi : 80 # figure dots per inch figure.facecolor : 1 # figure facecolor; 0.75 is scalar gray

因此,我将matlibplot与Python 2.7.5::Anaconda 1.7.0(64位)一起使用 我的matlibplot.rc文件中唯一未注释的行是:

figure.figsize   : 10, 5    # figure size in inches
figure.dpi       : 80      # figure dots per inch  
figure.facecolor : 1   # figure facecolor; 0.75 is scalar gray  
savefig.dpi         : 80      # figure dots per inch  
savefig.facecolor   : white    # figure facecolor when saving  
如果我打电话:

plt.savefig(name, bbox_inches=0)  
plt.show()  
一切正常

节目输出:

savefig的输出:

但是,如果我只是注释掉显示行,相同的文件如下所示:


发生什么事了???如何修复此问题?

以前的图形很可能覆盖在当前图形上,特别是如果您按住了

解决此问题的两种简单方法:

打印前切换保持以清除图形:

pylab.hold(False) # clears graph
pylab.hold(True) # restores to state you want
或在保存后明确清除图形:

pylab.save(...)
pylab.close()

您在
show
中看不到这种行为的原因是,当您关闭显示的图形时,会调用一个隐式的
close

是的,就是这样。谢谢我不明白你说的
pylab.hold(False)
是什么意思。这应该只是在
axes
对象中切换布尔值。此外,在文件保存到磁盘之前,你不会调用
close
,因此,我不明白这会如何影响保存的图形。@tcaswell-如果图形中存在现有数据(由于以前的保留),
hold(False)
将清除它。与关闭图形类似,问题在于之前运行的函数在当前图形上留下了数据,下一次调用
savefig
会看到这些数据。正如您所看到的,这解决了arghdos的问题:)不,
hold()
切换一个bool,该bool控制调用绘图函数时是否调用了
clf()
,打开和关闭都没有效果。请查看有关mpl的状态机与OO接口的解释。您能发布足够的代码来重现这一点吗?公认的答案可能有效,但它并不能真正解释发生了什么。