Guardar gráfico como imagen con Matplotlib

En este tutorial, repasaremos ejemplos de cómo guardar un gráfico como una imagen usando Matplotlib. También lo personalizaremos cambiando el color, DPI, configurando la transparencia, etc.

Introducción

Matplotlib es una de las bibliotecas de visualización de datos más utilizadas en Python. Los diagramas y visualizaciones de Matplotlib se comparten comúnmente con otros, ya sea a través de documentos o en línea.

En este artículo, veremos cómo guardar un diagrama/gráfico como un archivo de imagen usando Matplotlib.

Creando una Parcela

Primero vamos a crear una trama simple:

1
2
3
4
5
6
7
8
import matplotlib.pyplot as plt
import numpy as np

x = np.arange(0, 10, 0.1)
y = np.sin(x)

plt.plot(x, y)
plt.show()

Aquí, hemos trazado una función seno, comenzando en 0 y terminando en 10 con un paso de 0.1. Ejecutar este código produce:

sine visualization python

Ahora, echemos un vistazo a cómo podemos guardar esta figura como una imagen.

Guardar gráfico como imagen en Matplotlib

En el ejemplo anterior, generamos el gráfico a través de la función plot(), pasando los datos que nos gustaría visualizar.

Este gráfico se genera, pero no se nos muestra, a menos que llamemos a la función show(). La función show(), como sugiere el nombre, muestra el gráfico generado al usuario en una ventana.

Una vez generado, también podemos guardar esta figura/gráfico como un archivo - usando la función savefig():

1
2
3
4
5
6
7
8
import matplotlib.pyplot as plt
import numpy as np

x = np.arange(0, 10, 0.1)
y = np.sin(x)

plt.plot(x, y)
plt.savefig('saved_figure.png')

Ahora, cuando ejecutamos el código, en lugar de que aparezca una ventana con el diagrama, tenemos un archivo (saved_figure.png) en el directorio de nuestro proyecto.

Este archivo contiene exactamente la misma imagen que se muestra en la ventana:

save plot in matplotlib

Vale la pena señalar que la función savefig() no es exclusiva de la instancia plt. También puede usarlo en un objeto Figura:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
import matplotlib.pyplot as plt
import numpy as np

fig = plt.figure()

x = np.arange(0, 10, 0.1)
y = np.sin(x)

plt.plot(x, y)
fig.savefig('saved_figure.png')

La función savefig() tiene un argumento filename obligatorio. Aquí, hemos especificado el nombre de archivo y el formato.

Además, acepta otras opciones, como dpi, transparent, bbox_inches, quality, etc.

Repasaremos algunas opciones populares en las secciones siguientes.

Configuración de imagen DPI

El parámetro DPI define el número de puntos (píxeles) por pulgada. Esta es esencialmente la resolución de la imagen que estamos produciendo. Probemos un par de opciones diferentes:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
import matplotlib.pyplot as plt
import numpy as np

fig = plt.figure()

x = np.arange(0, 10, 0.1)
y = np.sin(x)

plt.plot(x, y)
fig.savefig('saved_figure-50pi.png', dpi = 50)
fig.savefig('saved_figure-100dpi.png', dpi = 100)
fig.savefig('saved_figure-1000dpi.png', dpi = 1000)

Esto da como resultado tres nuevos archivos de imagen en nuestra máquina local, cada uno con un DPI diferente:

save plot in matplotlib with dpi

El valor predeterminado es 100.

Guardar imagen transparente con Matplotlib

El argumento transparente se puede utilizar para crear un gráfico con un fondo transparente. Esto es útil si usará la imagen de la trama en una presentación, en un documento o si desea presentarla en una configuración de diseño personalizada:

1
2
3
4
5
6
7
8
import matplotlib.pyplot as plt
import numpy as np

x = np.arange(0, 10, 0.1)
y = np.sin(x)

plt.plot(x, y)
plt.savefig('saved_figure.png', transparent=True)

Si ponemos esta imagen sobre un fondo oscuro, dará como resultado:

save transparent plot in matplotlib

Cambiando los colores de la trama {#cambiando los colores de la trama}

Puede cambiar el color de la cara usando el argumento facecolor. Acepta un color y por defecto es blanco.

Vamos a cambiarlo a rojo:

1
2
3
4
5
6
7
8
import matplotlib.pyplot as plt
import numpy as np

x = np.arange(0, 10, 0.1)
y = np.sin(x)

plt.plot(x, y)
plt.savefig('saved_figure-colored.png', facecolor = 'red')

Esto resulta en:

change color of saved plot matplotlib

Configuración del cuadro del borde de la imagen

El argumento bbox_inches acepta una cadena y especifica el borde alrededor del cuadro que estamos trazando. Si deseamos configurarlo para que sea “apretado”, es decir, para recortar el cuadro tanto como sea posible, podemos establecer el argumento “bbox_inches” en “ajustado”:

1
2
3
4
5
6
7
8
import matplotlib.pyplot as plt
import numpy as np

x = np.arange(0, 10, 0.1)
y = np.sin(x)

plt.plot(x, y)
plt.savefig('saved_figure-tight.png', bbox_inches = 'tight', facecolor='red')

Esto da como resultado una caja bien empaquetada. Esto es más fácil de visualizar si coloreamos la cara con un color diferente como referencia:

set image border box with matplotlib

Conclusión

En este tutorial, hemos repasado varias formas de guardar el gráfico como un archivo de imagen usando Matplotlib.

Si está interesado en Visualización de datos y no sabe por dónde empezar, asegúrese de consultar nuestro paquete de libros en [Visualización de datos en Python](https://gum.co/data-visualization -en-paquete-de-libros-de-python):

Visualización de datos en Python Descuento por tiempo limitado: 2 por 1, ¡ahorra un 50 %! ✅ Garantía de devolución de dinero de 30 días sin preguntas ✅ Principiante a Avanzado ✅ Actualizado periódicamente de forma gratuita (última actualización en abril de 2021) ✅ Actualizado con recursos y guías adicionales

Visualización de datos en Python con Matplotlib y Pandas es un libro diseñado para llevar a los principiantes absolutos a Pandas y Matplotlib, con conocimientos básicos de Python, y permitirles construir una base sólida para el trabajo avanzado con estas bibliotecas, desde gráficos simples. a gráficos 3D animados con botones interactivos.

Sirve como una guía detallada que le enseñará todo lo que necesita saber sobre Pandas y Matplotlib, incluido cómo construir tipos de gráficos que no están integrados en la propia biblioteca.

Visualización de datos en Python, un libro para desarrolladores principiantes e intermedios de Python, lo guía a través de la manipulación de datos simple con Pandas, cubre bibliotecas de trazado centrales como Matplotlib y Seaborn, y le muestra cómo aprovechar las bibliotecas declarativas y experimentales. como Altair. Más específicamente, a lo largo de 11 capítulos, este libro cubre 9 bibliotecas de Python: Pandas, Matplotlib, Seaborn, Bokeh, Altair, Plotly, GGPlot, GeoPandas y VisPy.

Sirve como una guía práctica única para la visualización de datos, en una plétora de herramientas que podría usar en su carrera.