python matplotlib.pyplot 绘制图表图像重叠的问题

Rmag Breaking News
def gen_graph(self, days):
“””
根据历史数据绘制折线图并且保存
“””
gas_list = self.get_histroy_gas(days)
if gas_list:
x = []
y = []
for index, gas in enumerate(gas_list):
x.append(index+1)
y.append(gas)
# 计算变化百分比
percentage_change = [None] # 第一个点的变化百分比设为None
for i in range(1, len(y)):
change = ((y[i] – y[i – 1]) / y[i – 1]) * 100
percentage_change.append(change)

# 生成折线图
plt.plot(x, y)
plt.title(f'{len(gas_list)} days’)
plt.xlabel(‘day’)
plt.ylabel(‘GAS’)

# 在每个坐标点上显示Y轴的值和变化百分比
for i in range(len(x)):
if percentage_change[i] is not None:
plt.annotate(f'{y[i]} ({percentage_change[i]:.2f}%)’, (x[i], y[i]), textcoords=”offset points”,
xytext=(0, 10), ha=’center’)
else:
plt.annotate(f'{y[i]}’, (x[i], y[i]), textcoords=”offset points”, xytext=(0, 10), ha=’center’)
# 设置为整型
plt.xticks(x)
# 保存折线图
plt.savefig(self.file_name)
plt.close()

上面这段代码中,如果plt.close()缺少这一行,绘制图将会一直缓存在内存在,对象不会被自动销毁,导致后面再绘制图形的时候,会和老的图像叠加;

故,绘制图形一定要主动关闭,以此来主动清理内存

Leave a Reply

Your email address will not be published. Required fields are marked *