Guardar la figura de Seaborn en Python

Manav Narula 24 junio 2021
Guardar la figura de Seaborn en Python

En este tutorial, discutiremos cómo guardar una figura nacida en el mar en un archivo externo.

Usaremos la función matplotlib.pyplot.savefig(), que puede exportarlo a un archivo externo.

Necesitamos especificar el nombre del archivo junto con su formato y la ruta del archivo en la propia función.

Por ejemplo,

import pandas as pd
import matplotlib.pyplot as plt
import seaborn as sns

df = pd.DataFrame(
    {"Day 1": [7, 1, 5, 6, 3, 10, 5, 8], "Day 2": [1, 2, 8, 4, 3, 9, 5, 2]}
)

sns.lineplot(data=df)
plt.savefig("filename.png")

Podemos especificar otros formatos de archivo como jpeg, png y más. También podemos guardar el gráfico en formatos que no sean de imagen como PDF.

También podemos personalizar la figura final usando diferentes argumentos.

Por ejemplo, podemos especificar el argumento dpi en la función. El ppp significa puntos por pulgada, por lo que un valor más alto resultará en una resolución más alta de la imagen final.

Por ejemplo,

import pandas as pd
import matplotlib.pyplot as plt
import seaborn as sns

df = pd.DataFrame(
    {"Day 1": [7, 1, 5, 6, 3, 10, 5, 8], "Day 2": [1, 2, 8, 4, 3, 9, 5, 2]}
)

sns.lineplot(data=df)
plt.savefig("filename.png", dpi=300)

Si queremos, podemos cambiar la orientación mediante el parámetro orientation. La orientación es “retrato” de forma predeterminada.

En el siguiente código, guardamos la figura final en orientación horizontal.

import pandas as pd
import matplotlib.pyplot as plt
import seaborn as sns

df = pd.DataFrame(
    {"Day 1": [7, 1, 5, 6, 3, 10, 5, 8], "Day 2": [1, 2, 8, 4, 3, 9, 5, 2]}
)

sns.lineplot(data=df)
plt.savefig("filename.png", orientation="horizontal")

Otros argumentos disponibles son transparent, frameon, facecolor, edgecolor proporcionan más personalizaciones para la figura exportada final.

Tenga en cuenta que para las versiones recientes de seaborn, el uso directo de la función savefig() puede producir errores en algunos gráficos. Para tales casos, también deberíamos usar la función get_figure(). Esta función obtiene la instancia de la figura requerida, y luego podemos exportarla usando la función savefig().

El siguiente código demuestra esto.

import pandas as pd
import matplotlib.pyplot as plt
import seaborn as sns

df = pd.DataFrame(
    {"Day 1": [7, 1, 5, 6, 3, 10, 5, 8], "Day 2": [1, 2, 8, 4, 3, 9, 5, 2]}
)

splot = sns.lineplot(data=df)
sfig = splot.get_figure()
sfig.savefig("filename.png", orientation="landscape")
Manav Narula avatar Manav Narula avatar

Manav is a IT Professional who has a lot of experience as a core developer in many live projects. He is an avid learner who enjoys learning new things and sharing his findings whenever possible.

LinkedIn