2012-05-30 58 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