从eclipse运行时,closuresmatplotlib中已有的graphics

我的问题很简单:我有一个使用matplotlib生成数字的python脚本。 每次我运行它都会产生一个带有数字的新窗口。 我怎样才能让脚本closures上次运行时打开的窗口?

在matlab中类似的命令是在matlab脚本的开头放置'closures所有'。

我看到了几个build议来做类似的事情

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

如果你从python shell运行你的脚本,例如使用这个解决scheme

 >>>> 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() 

这应该绘制一个漂亮的三相电源的理想波形。

您可以通过调用matplotlib.pyplot.close来closuresgraphics,例如:

 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")closures所有打开的数字

请参阅Bi Rico针对一般Eclipse案例的回答。

对于像我这样的人来说,因为你有很多的窗户而在这里降落,而且你正在努力把它们全部closures,所以根据你的情况,杀死python可能是有效的。 它几乎可以在任何情况下工作 – 包括使用Eclipse。

我刚刚从emacs中产生了60张图(我更喜欢去日食),然后我想我的脚本已经退出了。 在我的ipython窗口中运行close('all')对我来说不起作用,因为这些图不是来自ipython,所以我使用了寻找正在运行的python进程。

当我杀死口译人员时,所有60个地块都被closures – 例如,

 $ 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,也没有杀死更新pipe理器(杀死更新pipe理器可能是一个坏主意)…