matplotlib使用savefig保存柱状图无报错但图片为空问题求助
问题解答
错误根因
代码的问题是plt.show()和plt.savefig()的调用顺序错误。plt.show()在弹出绘图预览窗口后,会自动清空当前画布的所有内容,后续执行plt.savefig()时只能保存空的新画布,所以得到的是空白图片。
修复方案
调整两个方法的调用顺序,把plt.savefig()放在plt.show()之前执行即可。另外建议用with上下文管理器打开文件,自动处理文件关闭避免资源泄漏,修正后的完整代码如下:
import matplotlib.pyplot as plt import numpy as np # Declaring data year = [] relative_recurrence = [] # Open data file with open('relative recurrence plot.txt','r') as f: for row in f: row = row.split(' ') year.append(int(row[0])) relative_recurrence.append(float(row[1])) # Plot the graph plt.bar(year, relative_recurrence,color = 'grey', label = 'HILDCAAS', edgecolor='black') plt.xticks(np.arange(min(year), max(year) + 1, 5)) # Label for x-axis plt.xlabel("YEAR") # Label for y-axis plt.ylabel("Relative Occurence") # 先保存图像再弹出预览窗口 plt.savefig('recurrence plot.png', dpi=100) # dpi参数可按需调整图片分辨率 plt.show()
内容的提问来源于stack exchange,提问作者Prater
相关产品推荐
相关产品推荐

