2012-05-30 61 views
3

我想制作一系列图,并将每个图保存到一个文件中。但我不知道如何抹去以前的阴谋。也许我需要每次创建一个新的对象,但我不知道那是哪个对象。这是我的代码,注意评论。 这是我的代码:如何“清洁石板”?

import matplotlib.pyplot as plt 
ind = (1,2,3,4) 
groups=(
    (1, (1.1,1.2,1.3,1.4)), 
    (2, (2.2,2.2,1.2,2.4)), 
) 

for group in reversed(groups): 
    #clean the slate ? 
    plt.bar(ind ,group[1]) 
    plt.xticks([i+0.5 for i in ind],ind) 
    plt.savefig('%d.png' % group[0]) 

回答

5

不要创建一个新的数字与plt.figure()每一次,你会风相当迅速地耗尽内存。相反,使用(图分别轴):

plt.clf() 
plt.cla() 

您可以运行plt.close()释放的分配,但是出现了一些讨论,这种方法已经导致在过去的内存泄漏。快速测试表明,在版本1.1.1rc这工作没有问题,所以随意使用它作为替代。有用的related question讨论了方法之间的差异。

+1

你为什么说重复使用plt.figure会导致内存问题?如果你运行plt.close()会不会释放内存? – FakeDIY

+0

@FindDIY是调用'plt.close()'将释放分配的内存。我将编辑该问题以反映这一点,谢谢! – Hooked