我正在绘制条形图,并使用plt.savefig()将图另存为.png
这是代码:-
import matplotlib
matplotlib.use('agg')
import matpltlib.pyplot as plt
Plot_Value = [[13,6],[4,3],[6,8]]
x_axis = ["r1","r2"]
loop_value = ["L 1","L 2","L 3"]
for i in range(len(loop_value)):
fig = plt.figure()
plt.xticks(range(1, len(x_axis) + 1), x_axis,rotation=30)
plt.yticks(range(max(Plot_Value[i]) + 4))
BAR = plt.bar([x + 1 for x in range(len(x_axis))],Plot_Value[i])
fig.suptitle('SAVEFIG EXAMPLE', fontsize=20)
plt.xlabel('X-AXIS', fontsize=15)
plt.ylabel('Y-AXIS', fontsize=15)
for rect in BAR:
height = rect.get_height()
plt.text(rect.get_x() + rect.get_width()/2.0, height, '%d' % int(height), ha='center', va='bottom')
plt.savefig(str(loop_value[i].split(' ')[0])+str(loop_value[i].split(' ')[1])+".png", bbox_inches = "tight")
plt.close()
上面的代码是来自大型python文件的小代码。 直到这段代码无效,我的python程序的内存使用率一直保持不变。但是,一旦该代码激活,我的内存就会达到35MB,并且在绘图结束并且程序移至文件中的其他功能之后,该内存不会释放。该代码必须多次激活,每次执行时我都无法承受这些内存峰值。
我用过plt.close(), plt.close('all'), plt.clf(), plt.cla()
使用过del fig
(我知道这不会影响此问题)
在循环内和循环后也尝试了gc.collect()
。
我该如何解决,或者我错过了什么?