2016-10-18 17 views
0

ipython提示中,我使用matplotlib顯示了一些圖。關閉繪圖窗口時,它不會消失,但會在後臺「卡住」,並且不會響應用戶操作。你可以自己試試它了用下面的代碼:爲什麼我的情節在ipython模式退出時不會消失?

# test.py 
import matplotlib.pyplot as plt 

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

,並在提示

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 

這是一個錯誤,或者我可以以某種方式解決這個問題?

運行相同的代碼與普通的python提示符按預期工作。

+0

嘗試在繪圖之前運行'%matplotlib',以便IPython與顯示圖的GUI事件循環集成。 –

+0

@ThomasK這個工程!我使用了事先繪製過的圖形,並使用'%matplotlib'刪除了這個,但我可以解決這個問題。你介意加入你的評論作爲答案嗎? – pingul

回答

0

在繪圖之前嘗試運行%matplotlib,以便IPython與顯示繪圖的GUI事件循環集成。

一旦matplotlib 2.0發佈,這應該不是必需的,因爲它有一些代碼可以檢測它在IPython內運行的時間。

0

在ipython中使用pyplot應該有點小心。特別是plt.show()正在阻塞ipython終端。你應該使用fig.show(),因爲它不阻止ipython。如果你真的想使用pyplot,一個解決方法是使用plt.gcf().show(),它會得到當前的數字(gcf = get current figure),並且只顯示該數字。不過,我會建議創建數字爲fig = plt.figure(),然後使用fig.show()

請注意,如果你使用python運行它,你需要plt.show()!否則,數字將顯示,然後立即關閉!

相關問題