我在ubuntu 13.10 64bit
中使用matplotlib 1.2.1我有一个创建和保存绘图的函数,我多次调用该函数。然而,在某些情况下,suptitle被绘制在旧的上面,弄得一团糟。 我认为这与以下问题有关,但我无法理解该问题中的答复: Matplotlib suptitle prints over old title
我的代码如下:
# =======================================================================
def plotMultivariable(scenarios_h, variables_h, region, title, filename):
nvar = len(variables_h)
nscen = len(scenarios_h)
plt.figure(1)
maintitle = unicode(title, 'utf_8')
plt.suptitle(maintitle, fontsize=16, ha='center')
for i in range(nvar):
plt.subplot(nvar,1,i)
title = unicode(variables[variables_h[i]][0], 'utf_8')
ylabel = unicode(variables[variables_h[i]][1], 'utf_8')
plt.title(title)
plt.ylabel(ylabel)
for scenario in scenarios_h:
for spGroup in spAggregates.keys():
serieName = unicode(spGroup + " - " + scenario, 'utf_8')
serieColor = scenarios[scenario]
serieLineType = spAggregates[spGroup][2]
serieWidth = spAggregates[spGroup][3]
key = region, variables_h[i], scenario, spGroup
y = odata[key]
plt.plot(x, y, serieLineType, label=serieName, linewidth=serieWidth, color=serieColor)
plt.subplots_adjust(hspace=0.6)
plt.savefig(chartoutdir+"/"+filename)
#plt.show()
我将此函数称为:
plotMultivariable(['reference','vRegEnd075','vRegFixed','vRegFromHr'],['expReturns','vReg','vol','hV'],'11000','Management effect','management.png')
plotMultivariable(['reference','withRisk06','withRisk08','withRisk10'],['expReturns','vReg','vol','hV'],'11000','Risk effect','risk.png')
plotMultivariable(['nonspatial','reference','withVariance'],['expReturns','vReg','vol','hV'],'11000','Spatial explicit simulations','space.png')
以下是结果图。如果我查看它们而不是保存它们就可以了。在引用的答案中有任何提示或帮助理解回复吗?谢谢..
答案 0 :(得分:1)
你应该最终关闭你的身材以正确清理一切;只需添加
plt.close()
在你的功能结束时它应该可以工作。
答案 1 :(得分:1)
在你的情况下,可能会扰乱你的是matplotlib
是状态感知的(我不知道确切的单词)并且在已经创建的对象的背景中跟踪[即使这是一个bug] ,如链接问题中所述]。正如MBR所回答的那样,关闭情节可以解决您的问题。
另一种方式,正如你所链接的问题所解释的那样,将继续引用所创建的suptitles。然后,当它们表现为Text
个对象时,您可以更改它们的特征,尤其是显示的文本。