2012-03-08 16 views
6

matplotlibで閉じた図(つまり、ユーザXの1つ)を再び開くことはできますか?私は、その中にウィジェットを持つフィギュアを作成しようとしているので、回避策が利用可能である(ちょうど新しいフィギュアを作る)が、私は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を介してウィンドウを閉じるときです。私は近くの(fig)と "press X"と同じことをしていたので、上記のMWEを入れました。私がxを押して 'fig.show()'を試しても、私は同じ例外があります。 – keflavich

関連する問題