2012-05-30 3 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.close()를 실행할 수 있습니다

plt.clf() 
plt.cla() 

그러나 논의가 있었다이 방법은 과거에 메모리 누수로 이어질 가지고. 빠른 테스트는 버전 1.1.1rc에서 문제없이 작동하므로 무료로 사용할 수 있습니다. 유용한 related question은 방법 간의 차이점을 설명합니다.

+1

왜 plt.figure를 다시 사용하면 메모리 문제가 발생한다고 말합니까? plt.close()를 실행하면 메모리가 비어 있지 않습니까? – FakeDIY

+0

@FakeDIY 예'plt.close()'를 호출하면 할당 된 메모리가 비워집니다. 이 질문을 반영하여 수정하겠습니다. 감사합니다! – Hooked