2012-03-08 5 views
6

matplotlib에서 닫힌 그림 (즉, 사용자 X 명)을 다시 열 수 있습니까? 나는 거기에 위젯 그림을 만들려고 해요 그래서 해결 방법을 사용할 수있다 (다만 새로운 그림을),하지만 난 figure 있는지 알고 싶습니다Matplotlib : 닫힌 그림을 다시여시겠습니까?

In [14]: fig = figure(10) 

In [15]: close(fig) 

In [16]: fig.show() 

Exception in Tkinter callback 
Traceback (most recent call last): 
    File "/Library/Frameworks/Python.framework/Versions/2.6/lib/python2.6/lib-tk/Tkinter.py", line 1410, in __call__ 
    return self.func(*args) 
    File "/Library/Frameworks/Python.framework/Versions/2.6/lib/python2.6/lib-tk/Tkinter.py", line 495, in callit 
    func(*args) 
    File "/Library/Frameworks/Python.framework/Versions/2.6/lib/python2.6/site-packages/matplotlib/backends/backend_tkagg.py", line 253, in idle_draw 
    self.draw() 
    File "/Library/Frameworks/Python.framework/Versions/2.6/lib/python2.6/site-packages/matplotlib/backends/backend_tkagg.py", line 239, in draw 
    tkagg.blit(self._tkphoto, self.renderer._renderer, colormode=2) 
    File "/Library/Frameworks/Python.framework/Versions/2.6/lib/python2.6/site-packages/matplotlib/backends/tkagg.py", line 19, in blit 
    tk.call("PyAggImagePhoto", photoimage, id(aggimage), colormode, id(bbox_array)) 
TclError: this isn't a Tk application 

: 다음 코드는 순진하게 접근 방식을 보여줍니다 인스턴스는 닫힌 후에는 전혀 쓸모가 없다.

+0

가능한 복제본 [Matplotlib : 폐쇄 된 그림 표시 방법] (http://stackoverflow.com/questions/31729948/matplotlib-how-to-show-a-figure-that-has-been- 닫힌) –

답변

0

예, 그림을 닫으면 완전히 삭제됩니다.

+3

사실, 그건 전혀 사실이 아니야. 그림을 닫으면 gui 툴킷 (정확히 백엔드에 종속 된 것) 윈도우 객체는 파괴되지만 figure 객체는 파괴됩니다. Figure 객체는 여전히 존재하며, 여전히 그것을 저장할 수 있습니다 (예를 들어'fig.savefig (...) '는 그림을 닫은 후에도 완벽하게 작동합니다). –

+2

그러나 그림을 닫으려면 gui,'fig.close()'를 호출하지 말라. –

+0

@JoeKington - 실제로 관심이있는 경우입니다. 사용자가 GUI를 통해 창을 닫을 때입니다. 나는 위의 MWE를 넣었다. 왜냐하면 내가 가까이에 (그림) 있다고 가정하고 "X를 누르는"것이 똑같이했기 때문이다. 만약 x를 누르고'fig.show()'를 시도하면 같은 예외가 발생합니다. – keflavich

관련 문제