2016-10-18 9 views
0

私はプロンプトでmatplotlibを使用していくつかのプロットを表示しています。プロットウィンドウを閉じるとき、プロンプトウィンドウは消えませんが、バックグラウンドで「スタック」し、ユーザーの操作に応答しません。これはバグですか、私は何とかそれを修正することができ私のプロットがipythonモードの終了時に消えないのはなぜですか?

pingul $ ipython 
Python 3.5.2 (default, Jun 27 2016, 03:10:38) 
Type "copyright", "credits" or "license" for more information. 

IPython 5.1.0 -- An enhanced Interactive Python. 

In [1]: import test 
In [2]: test.f() 
### Trying to close it now doesn't work 

# test.py 
import matplotlib.pyplot as plt 

def f(): 
    plt.plot([1, 2, 3], [4, 3, 5]) 
    plt.show() 

とプロンプト

中:あなたは、次のコードを自分でそれを試してみることができますか?

通常のpythonプロンプトで同じコードを実行すると、正常に動作します。

+0

プロットする前に '%matplotlib'を実行して、IPythonがプロットを示すGUIイベントループと統合できるようにしてください。 –

+0

@ThomasKそれは動作します!以前はプロットがブロックされていて、 '%matplotlib'を使ってこれを取り除いていたのですが、それを回避することができます。答えとしてあなたのコメントを追加してもよろしいですか? – pingul

答えて

0

プロットする前に%matplotlibを実行して、IPythonがプロットを示すGUIイベントループと統合するようにしてください。

これは、matplotlib 2.0がリリースされてからは、IPythonの内部で実行されていることを検出するためのコードがいくつかあるので、これは不要です。

0

ipythonでのpyplotの使用には注意が必要です。特にplt.show()はipython端末をブロックしています。それはipythonをブロックしないので、fig.show()を使うべきです。 pyplotを本当に使いたい場合は、plt.gcf().show()を使用して現在の図(gcf =現在の図を取得)を表示し、その図のみを表示します。しかし、数字をfig = plt.figure()として作成し、次にfig.show()を使用することをお勧めします。

Pythonで実行する場合は、plt.show()が必要です。それ以外の場合は、図が表示され、すぐに閉じます!

関連する問題