1169 votos

Guardar un gráfico de archivo de imagen en lugar de mostrar el uso de Matplotlib (por lo que puede utilizarse en archivos de proceso por lotes, por ejemplo)

Estoy escribiendo una sencilla secuencia de comandos para generar parcelas sobre la marcha. Estoy utilizando el código de abajo (de Matplotlib documentación) como un punto de partida:

from pylab import *
from optparse import OptionParser

# Make a square figure and axes
figure(1, figsize=(6,6))
ax = axes([0.1, 0.1, 0.8, 0.8])

labels = 'Frogs', 'Hogs', 'Dogs', 'Logs'
fracs = [15,30,45, 10]

explode=(0, 0.05, 0, 0)
pie(fracs, explode=explode, labels=labels, autopct='%1.1f%%', shadow=True)
title('Raining Hogs and Dogs', bbox={'facecolor':'0.8', 'pad':5})

show() # Actually, don't show, just save to foo.png

No quiero ver el trazado en una interfaz gráfica de usuario, en su lugar, quiero guardar el gráfico a un archivo (por ejemplo foo.png) - ¿cómo hago eso?

1464voto

Hooked Puntos 16345

Mientras que la pregunta ha sido respondida, me gustaría añadir algunos consejos útiles para el uso de savefig. El formato de archivo se puede especificar por la extensión:

savefig('foo.png')
savefig('foo.pdf')

Le dará un rasterizadas o vectorizados de salida, respectivamente, que podrían ser útiles. Además, usted encontrará que pylab deja una generosa y a menudo indeseables, el espacio en blanco alrededor de la imagen. Quitar con:

savefig('foo.png', bbox_inches='tight')

164voto

Lukasz Czerwinski Puntos 1098

La solución es:

pylab.savefig('foo.png')

48voto

wonder.mice Puntos 1333

Si no te gusta el concepto de la "actual" de la figura, hacer:

import matplotlib.image as mpimg

img = mpimg.imread("src.png")
mpimg.imsave("out.png", img)

Iteramos.com

Iteramos es una comunidad de desarrolladores que busca expandir el conocimiento de la programación mas allá del inglés.
Tenemos una gran cantidad de contenido, y también puedes hacer tus propias preguntas o resolver las de los demás.

Powered by:

X