Python Matplotlib图不';如果未调用show,则无法正确渲染
因此,我将matlibplot与Python 2.7.5::Anaconda 1.7.0(64位)一起使用 我的matlibplot.rc文件中唯一未注释的行是: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
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接口的解释。您能发布足够的代码来重现这一点吗?公认的答案可能有效,但它并不能真正解释发生了什么。