Guarde el trazado en un archivo de imagen en lugar de mostrarlo
Esto muestra la figura en una GUI:
import matplotlib.pyplot as plt
plt.plot([1, 2, 3], [1, 4, 9])
plt.show()
Pero, ¿cómo puedo guardar la figura en un archivo (por ejemplo, foo.png)?
Cuando se utiliza matplotlib.pyplot.savefig
, el formato del archivo se puede especificar mediante la extensión:
from matplotlib import pyplot as plt
plt.savefig('foo.png')
plt.savefig('foo.pdf')
Eso da una salida rasterizada o vectorizada respectivamente. Además, a veces hay espacios en blanco no deseados alrededor de la imagen, que se pueden eliminar con:
plt.savefig('foo.png', bbox_inches='tight')
Tenga en cuenta que si muestra la trama, plt.show()
debe seguir plt.savefig()
; de lo contrario, la imagen del archivo estará en blanco.
Como han dicho otros, plt.savefig()
o fig1.savefig()
efectivamente es la forma de guardar una imagen.
Sin embargo, descubrí que en ciertos casos siempre se muestra la figura . (por ejemplo, con Spyder teniendo plt.ion()
: modo interactivo = activado). Soluciono esto forzando el cierre de la ventana de la figura con:
plt.close(figure_object)
(ver documentación ). De esta manera no tengo un millón de cifras abiertas durante un ciclo grande. Uso de ejemplo:
import matplotlib.pyplot as plt
fig, ax = plt.subplots( nrows=1, ncols=1 ) # create figure & 1 axis
ax.plot([0,1,2], [10,20,3])
fig.savefig('path/to/save/image/to.png') # save the figure to file
plt.close(fig) # close the figure window
Debería poder volver a abrir la figura más tarde si es necesario fig.show()
(no lo probé yo mismo).
La solucion es:
pylab.savefig('foo.png')