2012-03-08 45 views
6

是否可以在matplotlib中重新打開封閉的圖形(即,一個用戶X'd)?下面的代碼顯示了原始的方法: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 

我試圖創建一個含有小部件的數字,所以可行的解決方法(只是做一個新的數字),但我想知道,如果figure實例關閉後完全沒用。

+0

[Matplotlib:如何顯示已關閉的圖形]的可能重複(http://stackoverflow.com/questions/31729948/matplotlib-how-to-show-a-figure-that-has-been-關閉) – 2015-07-31 12:50:53

回答

0

是的,關閉圖形將其完全刪除。

+3

其實,這根本不是真的。關閉一個圖形會破壞gui工具包(完全取決於後端)窗口對象,但不會破壞圖形對象。圖形對象仍然存在,你仍然可以保存它(例如'fig.savefig(...)'在你關閉圖形後仍然可以正常工作。) – 2012-03-08 20:38:17

+2

但是,我指的是通過gui,而不是通過調用'fig.close()'(這會破壞事物)。 – 2012-03-08 20:49:22

+0

@JoeKington - 這實際上是我感興趣的情況:當用戶通過GUI關閉窗口時。我把上面的MWE放在了上面,因爲我已經接近了(fig),「按下X」也做了同樣的事情。如果我按x並嘗試'fig.show()',我會得到相同的異常。 – keflavich 2012-03-11 22:17:58

相關問題