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.
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.
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"
.
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.
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 conbbox_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.
# 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.
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.
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.
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.
GO TO FULL VERSION