tiempo real matrices graficos grafico graficas graficar coordenadas barras python numpy matplotlib pydev

python - real - Cerrar figuras preexistentes en matplotlib cuando se ejecuta desde eclipse



matplotlib python 3 (2)

Mi pregunta es simple: tengo un script de Python que genera figuras usando matplotlib. Cada vez que lo ejecuto, genera nuevas ventanas con figuras. ¿Cómo puedo hacer que el script cierre las ventanas que se abrieron la vez anterior?

el comando análogo en matlab es poner ''cerrar todo'' al comienzo de su script matlab.

He visto varias sugerencias para hacer algo como

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

Esta solución funciona si ejecuta su secuencia de comandos desde el shell de Python, por ejemplo, usando

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

Sin embargo, he encontrado que esto no funciona si ejecuto el script usando Eclipse / PyDev. ¿Cómo puedo hacer que funcione en Eclipse?

ejemplo:

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

Esto debería trazar las formas de onda ideales para una buena fuente de alimentación trifásica.


Puede cerrar una figura llamando a matplotlib.pyplot.close , por ejemplo:

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)

También puede cerrar todas las figuras abiertas llamando a matplotlib.pyplot.close("all")


Vea la respuesta de Bi Rico para el caso general de Eclipse.

Para cualquiera, como yo, que aterriza aquí porque tiene muchas ventanas y está luchando por cerrarlas todas, matar a Python puede ser efectivo, dependiendo de sus circunstancias. Probablemente funcione bajo casi cualquier circunstancia, incluso con Eclipse.

Acabo de generar 60 tramas de emacs (prefiero que eclipsar) y luego pensé que mi script había salido. Correr close(''all'') en mi ventana de ipython no funcionó porque las tramas no vinieron de ipython, así que recurrí a buscar ejecutar procesos de python.

Cuando maté al intérprete que ejecutaba el guión, entonces las 60 tramas estaban cerradas, por ejemplo,

$ 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

Tenga en cuenta que no maté mi ipython / pylab, ni maté al administrador de actualizaciones (matar al administrador de actualizaciones es probablemente una mala idea) ...