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()
缺少这一行,绘制图将会一直缓存在内存在,对象不会被自动销毁,导致后面再绘制图形的时候,会和老的图像叠加;故,绘制图形一定要主动关闭,以此来主动清理内存
Discover more from Coursity
Subscribe to get the latest posts sent to your email.