2013-02-21 52 views
43

我的問題很簡單:我有一個使用matplotlib生成數字python腳本。我每次運行它都會生成帶有數字的新窗口。我怎樣才能讓腳本關閉上次運行時打開的窗口?關閉預先存在的數字時

類似的命令在MATLAB是把「關閉所有的」在你的MATLAB腳本的開頭。

我見過幾個建議做這樣的事情

import matplotlib.pyplot as plt 
plt.close("all") 

,如果你從Python shell中運行你的腳本,此解決方案,例如使用

>>>> execfile("myScript.py") 

然而,我發現,這並未如果我使用Eclipse/PyDev運行腳本,則不起作用。我怎樣才能讓它在Eclipse中工作?

例如:

from numpy import * 
from matplotlib.pyplot import * 
from scipy import * 

close("all") 
    #close any previously open plots - this doesn't work when running via Eclipse 

t = linspace(0, 0.1,1000) 
w = 60*2*pi 

figure() 
plot(t,cos(w*t)) 
plot(t,cos(w*t-2*pi/3)) 
plot(t,cos(w*t-4*pi/3)) 
show() 

這應該繪製理想波形的一個不錯的3相電源。

回答

56

你可以通過調用matplotlib.pyplot.close關閉一個數字,例如:

from numpy import * 
import matplotlib.pyplot as plt 
from scipy import * 

t = linspace(0, 0.1,1000) 
w = 60*2*pi 


fig = plt.figure() 
plt.plot(t,cos(w*t)) 
plt.plot(t,cos(w*t-2*pi/3)) 
plt.plot(t,cos(w*t-4*pi/3)) 
plt.show() 
plt.close(fig) 

您也可以關閉所有打開的數據調用matplotlib.pyplot.close("all")

+2

此作品從一個控制檯(例如運行「>>>的execfile(‘script.py’)」在Python殼),但不是在Eclipse/PyDev的。有什麼不同? – AnjoMan 2013-02-21 22:50:44

+0

不錯。爲噪聲添加一個隨機矢量到cos(w * t-4 * pi/3)。 – Andrew 2014-11-09 18:04:31

+4

@AnjoMan你爲什麼接受這個答案?它顯然不能回答你的問題。 – dbliss 2015-05-28 05:35:39

3

見畢波多黎各的爲廣大Eclipse的情況下的答案。

任何人 - 像我一樣 - 因爲你有很多窗口,你就努力全部關閉,只殺蟒是有效的,根據您的情況誰在這裏登陸。它可能適用於幾乎所有情況下 - 包括Eclipse。

我只是催生了60個地塊從emacs的(我更喜歡到eclipse),然後我想我的劇本已經退出。在我的ipython窗口中運行close('all')對我來說不起作用,因爲這些圖不是來自ipython,所以我採取了尋找正在運行的python進程。

當我殺了運行該腳本解釋器,那麼所有60個地塊被關閉 - 例如,

$ ps aux | grep python 
rsage 11665 0.1 0.6 649904 109692 ?  SNl 10:54 0:03 /usr/bin/python3 /usr/bin/update-manager --no-update --no-focus-on-map 
rsage 12111 0.9 0.5 390956 88212 pts/30 Sl+ 11:08 0:17 /usr/bin/python /usr/bin/ipython -pylab 
rsage 12410 31.8 2.4 576640 406304 pts/33 Sl+ 11:38 0:06 python3 ../plot_motor_data.py 
rsage 12431 0.0 0.0 8860 648 pts/32 S+ 11:38 0:00 grep python 

$ kill 12410 

請注意,我沒有殺我的IPython/pylab,也沒有我殺了更新管理器(殺死更新管理器可能是一個壞主意)...

+0

+1我不得不使用PyCharm類似的問題,關鍵的一點,我害了它是由PyCharm編輯器啓動,並在其他的Emacs/Eclipse中/ PyDev的猜測Python進程。在PyCharm中,只需單擊底部窗口中的紅色「X」即可。 – shev72 2017-10-16 11:35:13