CodeGym /Curso de Java /Python SELF ES /Guardar gráficos como imágenes para usar en informes

Guardar gráficos como imágenes para usar en informes

Python SELF ES
Nivel 42 , Lección 1
Disponible

1. Formas de guardar gráficos

Hoy no solo vamos a crear gráficos bonitos, sino que también los convertiremos en imágenes geniales que puedes insertar en tus informes, presentaciones o álbumes para ocasiones especiales del tipo: "¡Mira, lo hice!". ¿Quién sabe? Quizás tu gráfico se haga viral en redes sociales y finalmente tengas tus quince minutos de fama.

Como en cualquier buen programa culinario donde elegimos una receta, comenzamos con un repaso de los diferentes formatos de archivos en los que podemos guardar gráficos. Cada formato tiene sus particularidades, y entender estas diferencias te ayudará a elegir el "plato" adecuado para tu "menú". Aquí algunos de ellos:

  • PNG (Portable Network Graphics): uno de los formatos más populares para gráficos web. Se caracteriza por una buena compresión sin pérdida de calidad, transparencia y un buen soporte en la mayoría de las aplicaciones.
  • PDF (Portable Document Format): ideal para insertar en documentos. Es un formato vectorial, lo que significa que conserva la claridad de la imagen cuando se escala.
  • SVG (Scalable Vector Graphics): otro formato vectorial, perfecto para la web. Soporta interactividad y animaciones.
  • JPEG (Joint Photographic Experts Group): generalmente se usa para fotografías, ya que tiene compresión con pérdida, lo que puede no ser adecuado para gráficos con texto.

Ahora que entendemos las opciones disponibles, trabajemos en guardar gráficos utilizando la función savefig() de la biblioteca Matplotlib.

Guardar gráficos con savefig()

Matplotlib hace que el proceso de guardar gráficos sea casi indoloro, como actualizar el sistema operativo de tu teléfono (si todo sale bien). Vamos a echar un vistazo a cómo se hace.

Python

import matplotlib.pyplot as plt

# Supongamos que tenemos un gráfico simple
x = [1, 2, 3, 4, 5]
y = [2, 3, 5, 7, 11]

plt.plot(x, y, label='Números primos')
plt.xlabel('x')
plt.ylabel('y')
plt.title('Gráfico lineal de números primos')
plt.legend()

# Guardar el gráfico en un archivo
plt.savefig('primes.png')

Este código crea un archivo primes.png en el directorio actual. ¡Eso es todo! No hay necesidad de memorizar hechizos o hacer sacrificios a los dioses digitales. Simplemente reemplazas plt.show() con plt.savefig('ruta/nombre del archivo') ¡y listo!

2. Configuración de parámetros de guardado

Claro, guardar el gráfico no es suficiente: ¡queremos que se vea increíble! Como dice el viejo dicho: "Si el gráfico es de mala calidad, nadie lo notará". O algo así.

Configuración de calidad y resolución de la imagen

Para crear imágenes de alta calidad, puedes ajustar el parámetro dpi (puntos por pulgada), que determina la densidad de píxeles en la imagen. Cuanto más alto sea el valor, más detallada será la imagen. Para la web normalmente es suficiente 72 dpi, y para impresión, 300 dpi o más.

Python

import matplotlib.pyplot as plt

x = [1, 2, 3, 4, 5]
y = [10, 20, 15, 25, 30]

plt.plot(x, y)

# Guardar el gráfico con alta resolución
plt.savefig("high_quality_plot.png", dpi=300)
plt.show()

Aquí dpi=300 aumenta la calidad de la imagen, haciéndola más nítida, lo cual es especialmente útil para informes e impresión.

Guardar sin bordes y márgenes adicionales

Matplotlib por defecto agrega márgenes alrededor del gráfico, lo cual no siempre es conveniente para insertar en un informe. Para guardar una imagen sin márgenes, usa el parámetro bbox_inches="tight".

Python

import matplotlib.pyplot as plt

x = [1, 2, 3, 4, 5]
y = [5, 10, 15, 20, 25]

plt.plot(x, y)

# Guardar el gráfico sin bordes
plt.savefig("plot_no_borders.png", bbox_inches="tight")
plt.show()

El parámetro bbox_inches="tight" elimina los márgenes innecesarios alrededor del gráfico, lo que permite obtener una imagen más compacta.

Definir tamaños del gráfico antes de guardarlo

A veces es necesario guardar un gráfico con un tamaño específico (por ejemplo, para presentaciones o publicaciones web). Con figure(figsize=(ancho, alto)) puedes establecer el tamaño del gráfico en pulgadas.

Python

import matplotlib.pyplot as plt

# Establecer tamaño del gráfico
plt.figure(figsize=(10, 5))  # 10 pulgadas de ancho y 5 de alto

x = [1, 2, 3, 4, 5]
y = [5, 10, 15, 20, 25]

plt.plot(x, y)
plt.title("Gráfico con tamaño especificado")

# Guardar gráfico con tamaño definido
plt.savefig("custom_size_plot.png")
plt.show()

En este ejemplo, el gráfico se guarda con un tamaño de 10x5 pulgadas. Los tamaños pueden ajustarse según los requisitos específicos de un informe o presentación.

Parámetros adicionales de savefig()

  • transparent=True: Guarda la imagen con un fondo transparente, lo cual es útil para insertar en fondos de color o transparentes.
  • pad_inches: Establece márgenes adicionales alrededor del gráfico. Se usa junto con bbox_inches.
  • format: Especifica el formato del archivo de guardado: pdf, png, jpg, ...

Si no se especifica el parámetro format, el método savefig() intentará determinarlo a partir del nombre del archivo.

Python

# Guardar gráfico con configuración de parámetros
plt.savefig('primes_high_res', dpi=300, pad_inches='tight', format='png', transparent=True)

Ahora tu gráfico se verá tan nítido que cualquiera que lo mire dirá: "¡Wow, sabías lo que hacías!"

3. Ejemplos de guardado

Por lo general, tenemos muchos ejemplos que podemos usar para probar y depurar. Esto nos permite entender cómo los diferentes parámetros afectan el resultado final.

Guardado en formato PDF

Si necesitas insertar gráficos en un informe o presentación, el formato PDF es perfecto para esto. Sus propiedades vectoriales permiten escalar la imagen sin pérdida de calidad.

Python

plt.savefig('primes.pdf', bbox_inches='tight')

Guardado en formato vectorial SVG

SVG es excelente para páginas web o complementos con animaciones, ya que sus propiedades permiten agregar interactividad.

Python

plt.savefig('primes.svg', bbox_inches='tight')

Guardado en formato JPEG

Si tu gráfico incluye principalmente imágenes en lugar de líneas claras y texto, el formato JPEG puede ser útil.

Python

plt.savefig('primes.jpg', quality=95)

Consejos útiles

  • Nombre del archivo: Elige nombres claros y descriptivos para los archivos para facilitar su búsqueda y reutilización.
  • Revisar la calidad: Antes de incluirlo en un informe, revisa el gráfico en pantalla para asegurarte de que la calidad cumpla con los requisitos.
  • Usar fondo transparente: Útil para crear gráficos para presentaciones o sitios web donde el gráfico puede superponerse a un fondo de color.

Problemas típicos

Al guardar gráficos pueden surgir errores, como cuando intentas actualizar los controladores de la impresora. Uno de los problemas más comunes es que la función savefig() no funciona en entornos como Jupyter Notebook. Esto se debe a que los gráficos en entornos interactivos solo pueden mostrarse y no guardarse. En este caso, puedes usar el método plt.close() para cerrar el gráfico después de guardarlo.

Comentarios
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION