Data Visualization

Guardando Gráficos Matplotlib como Imágenes Eficientemente Sin Mostrarlos

Spread the love

Matplotlib es una potente biblioteca de Python para crear visualizaciones. Guardar gráficos como archivos de imagen es una tarea común, pero el comportamiento predeterminado de mostrar el gráfico antes de guardarlo puede ser ineficiente. Este artículo demuestra cómo guardar eficientemente gráficos de Matplotlib directamente en archivos de imagen sin el paso de visualización intermedio.

Tabla de contenido

Usando savefig() para guardar gráficos

El método savefig() es la opción más versátil para guardar gráficos de Matplotlib. Ofrece control sobre el formato de archivo, la resolución y el tamaño de la figura. Para evitar mostrar el gráfico, llame a savefig() antes de cualquier comando que mostraría el gráfico (como plt.show()). Recuerde cerrar la figura usando plt.close() para liberar memoria, particularmente cuando se trabaja con numerosos gráficos.


import matplotlib.pyplot as plt
import numpy as np

# Datos de muestra
x = np.linspace(0, 10, 100)
y = np.sin(x)

# Crear el gráfico
plt.plot(x, y)
plt.xlabel("Eje X")
plt.ylabel("Eje Y")
plt.title("Onda sinusoidal")

# Guardar la figura SIN mostrarla
plt.savefig("sine_wave.png", dpi=300, bbox_inches='tight') # dpi controla la resolución, bbox_inches asegura que se incluyan todos los elementos

plt.close() 

Este código guarda el gráfico como sine_wave.png a 300 DPI. El argumento bbox_inches='tight' asegura que todo el gráfico, incluyendo etiquetas y títulos, se capture en la imagen guardada. Puede cambiar fácilmente el formato de archivo (por ejemplo, «.pdf», «.svg», «.jpg»). Consulte la documentación de Matplotlib para obtener una lista completa de los formatos compatibles.

Usando imsave() para guardar matrices de imagen

Para guardar matrices de imagen directamente, imsave() proporciona un enfoque más conciso. Esto es particularmente útil si ya ha generado datos de imagen como una matriz NumPy, eliminando la necesidad de crear un objeto de figura Matplotlib.


import matplotlib.pyplot as plt
import numpy as np

# Crear una matriz de imagen de muestra (escala de grises)
image_array = np.random.rand(256, 256)

# Guardar la matriz de imagen en un archivo
plt.imsave("random_image.png", image_array, cmap='gray')

Este código crea y guarda una imagen en escala de grises de 256×256. El argumento cmap especifica la mapa de color; aquí se usa ‘gray’. Hay otros mapas de color disponibles. imsave() es eficiente porque omite el manejo de figuras.

En resumen, tanto savefig() como imsave() ofrecen formas eficientes de guardar salidas de Matplotlib sin mostrarlas. La mejor opción depende de si está trabajando con una figura completa o una matriz de imagen sin procesar. Priorizar savefig() antes de plt.show() y usar plt.close() mejora la eficiencia, especialmente cuando se generan muchas imágenes.

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *