MatPlotLib中避免savefig()调用后的其他plot()调用中出现额外的图表

问题描述:

使用Python的MatPlotLib编写数据分析程序时,在程序中需要先针对每项分析结果导出独立的图表文件到磁盘,最后显示单一的总结图表,编写了如下代码:

# Import MatPlotLib
import matplotlib.pyplot as plt
 
# Data analysis
arrAnalysisResults = DoDataAnalysis()
 
# Save standalone figures
for AnalysisResult in arrAnalysisResults :
    # This plot() calling won't open a new MetPlotLib window
    figResult = AnalysisResult.plot()
 
    # Configure and save figure
    figResult.set_size_inches(w=8, h=6)
    plt.savefig(f"{AnalysisResult.Name}.png", dpi=120)
#Next
 
# Draw a new figure
figOverView = GenerateResultOverviewFigure(arrAnalysisResults)
plt.show()

此时发现,完成所有matplotlib.pyplot.savefig()调用后,再次调用matplotlib.pyplot.plot()函数,会出现2张图表,分别为最后一张被保存的图表,和需要的结果总结图表。

解决方案:

plt.savefig()调用后,增加对matplotlib.pyplot.close()的调用(即调用plt.close()),关闭当前图表。

参考资料:

https://blog.csdn.net/cxx654/article/details/105763129

https://www.zhihu.com/question/37221233

it
除非特别注明,本页内容采用以下授权方式: Creative Commons Attribution-ShareAlike 3.0 License