Los siguientes datos representan dos variables diferentes apiladas en un data frame. Cada variable representará un grupo y en los ejemplos siguientes se dibujará un histograma para cada uno de ellos en un mismo gráfico.
import numpy as np
import pandas as pd
# Simulación de datos
rng = np.random.RandomState(1)
x1 = rng.normal(0, 1, size = 500)
x2 = rng.normal(3, 1.5, size = 500)
x = np.concatenate((x1, x2), axis = 0)
grupo = np.repeat(np.array(["G1", "G2"]), [500, 500], axis = 0)
df = {'x': x, 'grupo': grupo}
# Data frame pandas
df = pd.DataFrame(data = df)
Para crear un histograma por grupo en seaborn tendrás que pasar tus datos a la función histplot
y la variable categórica que represente cada grupo al argumento hue
.
import seaborn as sns
# Histograma
sns.histplot(x = x, hue = grupo)
# Equivalente a:
sns.histplot(x = "x", hue = "grupo", data = df)
Dodge
Ten en cuenta que, por defecto, los histogramas se pueden solapar, como sucedía en el ejemplo anterior. Estableciendo el argumento multiple
como "dodge"
se evitará que las barras se solapen haciéndolas más estrechas.
import seaborn as sns
# Histograma
sns.histplot(x = x, hue = grupo,
multiple = "dodge")
Stack
Otra opción es apilar los histogramas estableciendo el argumento como "stack"
. Sin embargo, esta visualización tiende a ser más difícil de interpretar.
import seaborn as sns
# Histograma
sns.histplot(x = x, hue = grupo,
multiple = "stack")
Fill
La última opción es establecer el argumento como "fill"
, que creará la siguiente visualización, representando el porcentaje para cada histograma sobre las barras del eje X.
import seaborn as sns
# Histograma
sns.histplot(x = x, hue = grupo,
multiple = "fill")
El argumento palette
de la función puede ser usado para personalizar los colores de los histogramas. Puedes pasar una paleta de colores o un diccionario que contenga los colores deseados para cada grupo, tal y como se muestra en los ejemplos siguientes.
Paleta de colores
import seaborn as sns
# Histograma
sns.histplot(x = x, hue = grupo,
palette = "Set1")
Colores personalizados
import seaborn as sns
colores = {'G1': 'brown', 'G2': 'green'}
# Histograma
sns.histplot(x = x, hue = grupo,
palette = colores)
También te puede interesar