Muchas de las gráficas que realizamos con matplotlib son usadas como parte de escritos científicos, estadísticos o de cualquier otra índole por lo que en esta entrada veremos como podemos exportar estas gráficas en archivos de imágenes.
La primera opción seria usar el botón guardar que se encuentra en la ventana que se crea al momento de graficar.
Otra forma de exportar una gráfica creada con matplotlib es haciendo uso de la instrucción savefig.
Evidentemente esta es la opción mas fácil si tenemos pocas imágenes para exportar, sin embargo, si queremos realizar operaciones como guardar muchas imágenes, o poner nombres en secuencia, o guardar imágenes sin verlas primero este método no resulta ser muy efectivo.
import numpy as np import matplotlib.pyplot as plt plt.plot([2, 7, 3, 1, 4]) plt.savefig('imagen.png')
El código anterior nos crea la siguiente imagen con formato png en la misma ruta donde se encuentra el script que utilizamos para crear y guardar la imagen.
Podemos ver como la extensión del archivo es definida junto al nombre de la imagen en un solo string.
De esta manera podemos realizar programas un poco mas complejos como el siguiente
import numpy as np import random import matplotlib.pyplot as plt for i in range(1,11): datos = [random.randint(-10,10) for j in range(0,100)] #Lista por comprension que genera los datos de cada grafica. #Generamos 100 datos aleatorios entre -10 y 10 para cada grafica plt.title('Imagen #{0}'.format(i)) plt.xlabel('Muestras') plt.ylabel('Amplitud') plt.axis([0, 100, -15, 15]) #[xmin, xmax, ymin, ymax] plt.plot(datos) plt.savefig('imagen{0}.png'.format(i)) print 'Imagen {0} lista'.format(i) plt.clf() #Quita la figura actual para que no interfiera con la siguiente
El programa anterior genera 10 gráficas cada una con datos diferentes de forma aleatoria y las guarda en disco
La función savefig cuenta con algunos argumentos que pueden ser de ayuda como por ejemplo transparent el cual recibe un valor boleano (True o False) y determina si la gráfica tiene un fondo o es completamente transparente. Esto es especialmente util si se desea insertar la gráfica en una pagina con fondo de algún color y no se quiere dejar la gráfica con un fondo blanco.
plt.savefig('imagen.png', transparent=True)
Imagen transparente sobre un fondo negro
Para mas información sobre los argumentos que puede recibir la función savefig podemos ver la documentación de matplotlib sobre esta.
Muchas gracias por tu post, me ha servido de gran ayuda :D
ResponderEliminar