Facetas en seaborn

Crear facetas consiste en dividir los datos según los valores de una o dos variables categóricas y dibujar un subplot para cada grupo. En seaborn, las funciones a nivel de figura (relplot, displot, catplot y lmplot) permiten crear facetas directamente con los argumentos col y row.

Facetas con col y row

Pasa el nombre de una columna a col para crear un subplot por grupo en columnas diferentes, o a row para colocarlos en filas diferentes.

Facetas por columna en seabornFacetas por columna en seaborn

import seaborn as sns
import matplotlib.pyplot as plt

tips = sns.load_dataset("tips")

sns.relplot(data = tips, x = "total_bill", y = "tip",
            col = "time", height = 3.5)
# plt.show()

Filas y columnas

Combina ambos argumentos para crear una cuadrícula con todas las combinaciones de dos variables.

import seaborn as sns
import matplotlib.pyplot as plt

tips = sns.load_dataset("tips")

sns.displot(data = tips, x = "total_bill",
            col = "time", row = "smoker", height = 2)
# plt.show()

Cuadrícula de facetas por fila y columna en seabornCuadrícula de facetas por fila y columna en seaborn

Repartir las facetas con col_wrap

Cuando una variable tiene muchos grupos, col_wrap establece el número máximo de columnas y el resto de facetas continúan en la fila siguiente.

import seaborn as sns
import matplotlib.pyplot as plt

tips = sns.load_dataset("tips")

sns.catplot(data = tips, x = "sex", y = "total_bill", kind = "box",
            col = "day", col_wrap = 2, height = 2)
# plt.show()

Repartir las facetas en varias filas con col_wrap en seabornRepartir las facetas en varias filas con col_wrap en seaborn

Títulos de las facetas

Los títulos de las facetas se pueden cambiar con set_titles, donde {col_name} y {row_name} se reemplazan por el valor de cada grupo. Agrega un título general con g.figure.suptitle.

Personalizar los títulos de las facetas en seabornPersonalizar los títulos de las facetas en seaborn

import seaborn as sns
import matplotlib.pyplot as plt

tips = sns.load_dataset("tips")

g = sns.relplot(data = tips, x = "total_bill", y = "tip",
                col = "time", height = 3.5)

g.set_titles("Servicio: {col_name}")
g.figure.suptitle("Propinas según el momento del día", y = 1.05)
# plt.show()

Ejes independientes

Por defecto todas las facetas comparten los mismos límites de los ejes, lo que facilita las comparaciones. Utiliza facet_kws = {"sharey": False} (o sharex) para que cada faceta tenga su propia escala.

Facetas con el eje Y independiente en seabornFacetas con el eje Y independiente en seaborn

import seaborn as sns
import matplotlib.pyplot as plt

tips = sns.load_dataset("tips")

sns.displot(data = tips, x = "tip", col = "time", height = 3.5,
            facet_kws = {"sharey": False})
# plt.show()

Facetas personalizadas con FacetGrid

FacetGrid permite crear primero la cuadrícula y dibujar cualquier función de gráficos en cada faceta con map o map_dataframe.

Facetas personalizadas con FacetGrid en seabornFacetas personalizadas con FacetGrid en seabornFacetas personalizadas con FacetGrid en seaborn

import seaborn as sns
import matplotlib.pyplot as plt

tips = sns.load_dataset("tips")

g = sns.FacetGrid(tips, col = "time", hue = "smoker", height = 3.5)
g.map_dataframe(sns.scatterplot, x = "total_bill", y = "tip")
g.add_legend()
# plt.show()

Personalizar cada faceta

El atributo axes de la cuadrícula contiene los ejes de cada faceta, por lo que puedes personalizarlos individualmente con matplotlib, por ejemplo agregando una línea de referencia.

import seaborn as sns
import matplotlib.pyplot as plt

tips = sns.load_dataset("tips")

g = sns.relplot(data = tips, x = "total_bill", y = "tip", col = "time")

for ax in g.axes.flat:
    ax.axhline(tips["tip"].mean(), color = "red", linestyle = "--")
# plt.show()

Aprende a cambiar el tamaño de las facetas en el tutorial sobre el tamaño de la figura en seaborn. Para combinar distintos tipos de gráficos en una misma figura utiliza los subplots de matplotlib.

Data Sketches

A journey of imagination, exploration, and beautiful data visualizations

Comprar en Amazon
Storytelling con Datos

Visualización de datos para profesionales

Comprar en Amazon

También te puede interesar