Histograma por grupo en seaborn

Simulación de datos

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)

Histograma por grupo

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)

Histograma por grupo en seaborn

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")

Histograma tipo dodge en seaborn

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")

Histograma apilado por grupo en seaborn

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")

Histograma por grupo tipo fill en seaborn con histplot

Personalización del color

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.

Histograma por grupo con paleta de colores personalizada en seaborn

Paleta de colores

import seaborn as sns

# Histograma
sns.histplot(x = x, hue = grupo,
             palette = "Set1")

Histograma por grupo en seaborn con colores personalizados

Colores personalizados

import seaborn as sns

colores = {'G1': 'brown', 'G2': 'green'}

# Histograma
sns.histplot(x = x, hue = grupo,
             palette = colores)
Fundamentals of Data Visualization

A Primer on Making Informative and Compelling Figures

Comprar en Amazon
Data Sketches

A journey of imagination, exploration, and beautiful data visualizations

Comprar en Amazon

También te puede interesar