Guarde el trazado en un archivo de imagen en lugar de mostrarlo

Resuelto Homunculus Reticulli asked hace 12 años • 26 respuestas

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

Homunculus Reticulli avatar Mar 09 '12 00:03 Homunculus Reticulli
Aceptado

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.

Hooked avatar Mar 27 '2012 13:03 Hooked

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

Demis avatar Apr 28 '2015 22:04 Demis

La solucion es:

pylab.savefig('foo.png')
Lukasz Czerwinski avatar Mar 27 '2012 11:03 Lukasz Czerwinski