2014-07-22 3 views
0

다른 파일의 데이터를 사용하여 동일한 pdf 파일에 다른 플롯을 저장해야합니다. 나는이 코드를 사용하여 각 단계마다 특정 파일을 열고 어떤 함수 을 사용하여 분석하고 pdf 파일에 저장합니다. 내 문제는 matplotlib의 대기열이 증가하고 결국 plt.show()라고 말하면 나는 많은 수의 다른 수치를 되 찾는다. 나는 이것을 원하지 않으며, 플롯을 보지 않고 maplotlib의 큐를 청소하고 싶습니다.matplotlib의 대기열을 정리하고 큰 pdf 수치 저장

내가 사용하는 코드는 :

mu=arange(0.01,20.,0.03) 
info1=[] 
info2=[] 
for i in range(0,7): 

    inf1=[] 
    inf2=[] 
    pathe = path +"%i/"%(i) 

    nameplot= "time_traces_%d.pdf"%(i) 

    pp=PdfPages(nameplot) 

    for j in mu: 

     filename="InfoDati_"+"%lf_"%(j)+"%d.txt"%(i) 



     fil = pathe + filename 

     data=loadtxt(fil) 

     t=data[:,0] 
     x=data[:,1] 
     y=data[:,2]    # y, z should be the simulation, x the sin 
     z=data[:,3] 

     x=array(x) 

     y=array(y) 

     z=array(z) 

     t=array(t) 


     fig=filename 

     fig=plt.figure() 
     plt.plot(t,x,t,y,t,z) 

     plt.xlim(0,500) 
     pp.savefig(fig) 

     pp.close() 
     ` 

지금은 plt.show() 나는 .. 수치 만 다시이를 입력하면 내가 같은 plt.plot의 큐, 또는 무언가를 종료해야 이!

커다란 문제는 대기열이 너무 커서 모든 것이 충돌하고 터미널이 'Killed'라고 말합니다. 및 종료 ipython.

도움 주셔서 감사합니다!

+0

'plt.close ('all')'또는'plt.close (fig)' – tacaswell

+0

pp와 plt 란 무엇입니까? plt는 matplotlib.pyplot입니다. 그리고 왜 '그림 = 파일 이름'을 사용하지 않습니까? – MaxNoe

답변

1

내가 문제를 이해한다면 모르겠지만, 코드의이 부분은 당신이 무슨 일을하는지 확실하지 않은 제안, 그래서 오류가 자리하고있는 곳이 아마도 :

fig=filename # useless 

    fig=plt.figure() # you're creating a figure that you never destroy 
    plt.plot(t,x,t,y,t,z) 

    plt.xlim(0,500) 
    pp.savefig(fig) 

    pp.close() # this shouldn't be inside this loop 
    당신이 pp.close()을 사용하면 바로 다음 줄에 같은 변수
  • -plt.figure()을 할당하고 있기 때문에
  • fig-filename를 할당 할 이유가 없다, 그건 당신이 현재에 이미지를 저장하고있는 pdf 파일을 닫습니다. 그러나 외부에서 pp이 생성 되더라도 루프 내부에서 그렇게합니다.
  • 이것은 각 이미지를 PDF 파일에 추가 한 다음 열려있는 이미지를 닫으려는 의도가 있음을 의미합니다 (루프의 다음 단계에서 새 이미지를 만들기 전에). 따라서 plt.close(fig)을 대신 수행하려고합니다.
  • 게시 한 코드로 인해 만든 이미지가 닫히지 않으므로 이미지가 너무 많은 이유가 설명됩니다.

루프를, 그 여분의 라인을 제거하는 곳 루프 이후에 pp.close()를 이동 내부 plt.close(fig)를 추가하는 시도하고 그 문제가 해결되는지 확인.