Python

Generar figuras de alta resolución en Matplotlib

Por defecto la resolución con la que se crean las figuras en Matplotlib es de 72 puntos por pulgada (ppp), el valor estándar de las pantallas tradicionales. Aunque esta configuración es insuficiente en el caso de que se desee imprimir la gráfica o esta se visualice en una pantalla HiDPI o Retina. A la hora de trabajar con Jupyter se puede cambiar la configuración para doblar la resolución, aumentado esta hasta los 144 ppp. Pero en el caso de que el destino de las figuras sea un documento impreso, es necesario aumentar aún más la resolución de estas. Veamos cómo se pueden crear archivos con figuras de alta resolución en Matplotlib.

Guardar las figuras creadas con savefig()

Una vez creada una figura en Matplotlib, el método savefig() permite guardar esta es un archivo. Para lo que solamente hay que indicar el nombre del documento en el que se desea guardar la gráfica. Usando el método la extensión del archivo para seleccionar el formato, aunque también se puede indicar de forma explícita mediante la propiedad format.

Como se ha comentado anteriormente la resolución con la que se guardan las imágenes por defecto es de 72 ppp. Para fijar otra resolución solamente se tiene que indicar el valor deseado mediante la propiedad dpi. Así, se puede generar la misma figura con 72, 300 y 600 ppp tanto en formato PNG como JPG con el siguiente código.

import numpy as np
import matplotlib.pyplot as plt

x = np.linspace(0, np.pi, 200)
y = np.cos(3 * np.pi * x)

plt.plot(x, y, '--r')
plt.xlabel('Tiempo')
plt.ylabel('Amplitud')

# Figuras en formato PNG
plt.savefig("figura_base.png")
plt.savefig("figura_300dpi.png", dpi=300)
plt.savefig("figura_600dpi.png", dpi=600)

# Figuras en formato JPG
plt.savefig("figura_base.jpg")
plt.savefig("figura_300dpi.jpg", dpi=300)
plt.savefig("figura_600dpi.jpg", dpi=600)

Obteniendo en el archivo figura_base.png la siguiente imagen.

Figura PNG creada con la resolución por defecto en Matplotlib

Mientras que en el archivo figura_600dpi.png se obtiene la siguiente figura de mayor resolución.

Figura PNG creada con la resolución de 600 ppp en Matplotlib

Obviamente la calidad de esta segunda es mucho mayor que la primera. Aunque esto es algo que repercute en el tamaño del archivo, pasando en el ejemplo de 20 a 319 KB. En concreto el tamaño de los seis archivos se puede ver en la siguiente tabla.

ArchivoTamaño (KB)
figura_base.png20
figura_300dpi.png102
figura_600dpi.png220
figura_base.jpg17
figura_300dpi.jpg117
figura_600dpi.jpg319
Comparación de los tamaños de los archivos en función del formato y la resolución.

Los valores dependen de la complejidad de la figura, por lo que para otras gráficas pueden ser tanto mayores como menores los mostrados.

Conclusiones

En esta entrada se ha visto cómo se puede usar la propiedad dpi de savefig() para generar archivos con figuras de alta resolución en Matplotlib. Una propiedad que es importante cuando se desea utilizar las gráficas de Matplotlib en documentos impresos.

¿Te ha parecido de utilidad el contenido?

Daniel Rodríguez

Share
Published by
Daniel Rodríguez
Tags: Matplotlib

Recent Posts

Analytics Lane lanza ScoreFlow, un SaaS para construir y desplegar scorecards de crédito

En Analytics Lane seguimos evolucionando nuestras herramientas y damos un paso más con el lanzamiento…

2 días ago

DBSCAN y la selección de ε: teoría, intuición y aplicación práctica

Cuando hablamos de clustering, lo primero que viene a la mente suele ser k-means. Pero…

3 días ago

El bestiario de los indicadores económicos absurdos: El zoo patrio

Cualquier país desarrollado tiene sus propios indicadores folclóricos. España, por motivos que tienen mucho que…

1 semana ago

Por qué el banco te ofrece un 3% TAE y no es lo que parece

Entras a la web de tu banco. En la página principal, un banner llamativo: “Depósito…

1 semana ago

Analytics Lane lanza la versión 1.3 del laboratorio con nuevas herramientas de evaluación de modelos y utilidades prácticas

Seguimos ampliando el laboratorio de Analytics Lane con el lanzamiento de la versión 1.3, disponible…

2 semanas ago

This website uses cookies.