2012-03-08 14 views
6

E 'possibile riaprire una figura chiusa (vale a dire, l'utente X'd) in matplotlib? Il codice seguente mostra l'approccio ingenuo:Matlota: riaprire una figura chiusa?

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 

Sto cercando di creare una figura con i widget in esso, in modo da una soluzione è disponibile (solo fare una nuova figura), ma mi piacerebbe sapere se il figure l'istanza è totalmente inutile dopo essere stata chiusa.

+0

possibile duplicato di [Matlota: come mostrare una figura che è stata chiusa] (http://stackoverflow.com/questions/31729948/matplotlib-how-to-show-a-figure-that-has-been- chiuso) –

risposta

0

Sì, chiudendo la figura lo elimina completamente.

+3

In realtà, non è affatto vero. La chiusura di una figura distrugge l'oggetto della finestra del gui toolkit (esattamente ciò che dipende dal backend), ma non l'oggetto figure. L'oggetto figura esiste ancora ed è ancora possibile salvarlo (ad esempio 'fig.savefig (...)' funzionerà perfettamente anche dopo aver chiuso la figura.) –

+2

Tuttavia, mi riferisco alla chiusura della figura tramite il gui, non chiamando 'fig.close()' (che distrugge le cose). –

+0

@JoeKington - In realtà è il caso a cui sono interessato: quando l'utente chiude una finestra tramite la GUI. Ho messo il MWE sopra perché avevo assunto close (fig) e "pressing X" ha fatto la stessa cosa. Se premo x e provo 'fig.show()', ottengo la stessa eccezione. – keflavich

Problemi correlati