Al trabajar con conjuntos de datos complejos, a menudo puede ser necesario explorar las relaciones entre las variables de tipo categóricas y continuas. Por ejemplo:
Generalmente, la representación de este tipo de relaciones en un único gráfico puede ser algo confuso y poco claro. Siendo en estos casos donde la clase FacetGrid de Seaborn se convierte en una herramienta imprescindible. FacetGrid permite mostrar los datos en paneles múltiples en función de una o más variables de tipo categórico, creando de este modo gráficos separados para cada subconjunto de datos.
En esta entrada, se mostrará cómo utilizar sns.FacetGrid()
para explorar datos categóricos y continuos en paneles múltiples, facilitando el análisis de tendencias complejas.
sns.FacetGrid()
de SeabornFacetGrid es una clase de Seaborn que permite:
Esto resulta útil cuando se desea realizar análisis en función de una variable dependiente de otras variables categóricas.
Supongamos que se tiene un conjunto de datos sobre el consumo de combustible en automóviles (que se puede importar de los ejemplos que existen en Seaborn) y se desea analizar cómo varía el consumo en función del tipo de combustible.
import seaborn as sns import matplotlib.pyplot as plt # Cargar datos de ejemplo mpg = sns.load_dataset("mpg") # Crear un FacetGrid g = sns.FacetGrid(mpg, col="origin", height=4, aspect=1.2) # Graficar histogramas de millas por galón (mpg) g.map(sns.histplot, "mpg", kde=True, color="blue") # Títulos y etiquetas g.set_titles("Origen: {col_name}") g.set_axis_labels("Millas por galón", "Frecuencia") g.tight_layout() plt.show()
En este ejemplo, una vez importados los datos, se ha llamado al constructor de la clase FacetGrid()
con el parámetro col="origin"
, lo que permite dividir los gráficos en columnas en función de la variable categórica origin
. A continuación, se llama al método map()
que crea un gráfico (en este caso, un histograma) para cada subconjunto de datos. Representándo cada uno de los paneles un subconjunto diferente de origin
. El resultado después de ejecutar este código sería una figura como la que se muestra a continuación.
La clase FacetGrid
permite añadir otra dimensión categórica usando el argumento row
. Por ejemplo, se pueden dividir los datos en base al origin
(columnas) y cylinders
(filas, para el número de cilindros). Algo que se puede conseguir con el siguiente código:
# Crear un FacetGrid con filas y columnas g = sns.FacetGrid(mpg, col="origin", row="cylinders", height=3, aspect=1.2) # Graficar diagramas de dispersión (peso vs millas por galón) g.map(sns.scatterplot, "weight", "mpg", color="purple", alpha=0.7) # Títulos y etiquetas g.set_titles("Origen: {col_name} | Cilindros: {row_name}") g.set_axis_labels("Peso", "Millas por galón") g.tight_layout() plt.show()
En este ejemplo, cada panel está definido en función de una combinación de origin
y cylinders
. Lo que permite observar tendencias en subgrupos más específicos del conjunto de datos. El resultado de este código se puede ver en la siguiente figura.
Los gráficos se pueden personalizar con estilos, paletas de colores y leyendas. Esto es lo que se muestra en el siguiente ejemplo.
# Crear un FacetGrid con paleta de colores personalizada palette = {"usa": "red", "europe": "green", "japan": "blue"} g = sns.FacetGrid(mpg, col="origin", hue="origin", height=4, aspect=1.2, palette=palette) # Graficar diagramas de dispersión g.map(sns.scatterplot, "weight", "mpg", alpha=0.8) # Agregar una leyenda g.add_legend(title="Origen") g.set_titles("Origen: {col_name}") g.set_axis_labels("Peso", "Millas por galón") g.tight_layout() plt.show()
En este código, el parámetro hue
colorea los puntos en función de la variable categórica origin
. Además, también se agrega una leyenda para interpretar los colores. El resultado se muestra en la siguiente figura:
FacetGrid también permite el uso de funciones personalizadas para aplicar cálculos adicionales o personalizar el propio gráfico. Esto se puede ver en el siguiente ejemplo.
# Función personalizada para agregar líneas de tendencia import numpy as np def scatter_with_trend(x, y, **kwargs): sns.scatterplot(x=x, y=y, **kwargs) z = np.polyfit(x, y, 1) p = np.poly1d(z) plt.plot(x, p(x), color="orange", linestyle="--") # Crear un FacetGrid g = sns.FacetGrid(mpg, col="origin", height=4, aspect=1.2) # Aplicar la función personalizada g.map(scatter_with_trend, "weight", "mpg", alpha=0.7) g.set_titles("Origen: {col_name}") g.set_axis_labels("Peso", "Millas por galón") g.tight_layout() plt.show()
Aquí, la función personalizada scatter_with_trend
añade líneas de tendencia a cada uno de los gráficos.
La clase FacetGrid de Seaborn es una opción interesante para la creación de gráficos complejos donde es necesario relacionar variables categorías con continuas. Algo que hace mediante la creación de gráficos con múltiples paneles. Facilitando con esto el análisis de tendencias y patrones en subconjuntos de datos, lo que permite la identificación de valores clave en los datos.
Ya sea para trabajar con datos demográficos, series temporales o cualquier otro tipo de información, FacetGrid permite crear visualizaciones claras y efectivas que destacan las relaciones más importantes.
En casi cualquier análisis estadístico —ya sea en medicina, psicología, economía o ciencia de datos—…
El MSCI World Index suele presentarse como “la ventana al mundo” para quienes invierten en…
En el mundo del análisis de datos solemos escuchar una idea poderosa: cuantos más datos,…
¿Te has encontrado con este error al intentar instalar paquetes con npm? npm ERR! code…
En ciencia de datos y estadística, los promedios y porcentajes son herramientas fundamentales para resumir…
Las bases de datos son el corazón de casi cualquier sistema de información moderno. Ya…
This website uses cookies.