Histograma en seaborn con histplot

Histograma básico en seaborn con histplot

Dado un vector, puedes crear un histograma en seaborn con la función histplot. Ten en cuenta que puedes pasar una única variable o una variable de un conjunto de datos, tal y como se muestra en el ejemplo siguiente.

import numpy as np
import seaborn as sns

# Simulación de datos
rng = np.random.RandomState(0)
x = rng.normal(0, 1, size = 1000)
df = {'x': x}

# Histograma
sns.histplot(x = x)

# Equivalente a:
sns.histplot(x = "x", data = df)

Histogram en seaborn con histplot

Histograma horizontal

Si prefieres un histograma horizontal, en lugar de pasar tu variable de interés al argumento x de la función tan solo tienes que pasarla al argumento y.

import numpy as np
import seaborn as sns

# Simulación de datos
rng = np.random.RandomState(0)
x = rng.normal(0, 1, size = 1000)
df = {'x': x}

# Histograma
sns.histplot(y = x)

Histograma horizontal en seaborn

Grosor de las barras

El argumento shrink de la función controla la escala del grosor de cada barra (entre 0 y 1). En el siguiente ejemplo estamos creando un histograma cuyas barras son la mitad de anchas que el tamaño por defecto.

import numpy as np
import seaborn as sns

# Simulación de datos
rng = np.random.RandomState(0)
x = rng.normal(0, 1, size = 1000)
df = {'x': x}

sns.histplot(x = x, shrink = 0.5)

Cambiar el grosor de las barras de un histograma de seaborn con shrink

Además, la función proporciona una manera de modificar la representación visual del histograma con el argumento element, que por defecto es "bars" (barras). Otras opciones son "step" (escalera, como si las barras no tuviesen bordes) y "poly" (polígono).

Step

import numpy as np
import seaborn as sns

# Simulación de datos
rng = np.random.RandomState(0)
x = rng.normal(0, 1, size = 1000)
df = {'x': x}

sns.histplot(x = x, element = "step")

Histograma sin bordes en Python

Polígono

import numpy as np
import seaborn as sns

# Simulación de datos
rng = np.random.RandomState(0)
x = rng.normal(0, 1, size = 1000)
df = {'x': x}

sns.histplot(x = x, element = "poly")

Histograma poligonal en Python

Tipos de histograma

El argumento stat de la función histplot controla el tipo de histograma a ser creado. Por defecto,stat = "count", que muestra el número de observaciones en cada barra. Sin embargo, existen otras opciones que puedes seleccionar, como "frequency" (histograma de frecuencias), "probability", "percent" y "density" (histograma de densidad). Los siguientes bloques de código muestran un par de ejemplos.

Histograma de densidad en Python

Histograma de densidad

import numpy as np
import seaborn as sns

# Simulación de datos
rng = np.random.RandomState(0)
x = rng.normal(0, 1, size = 1000)
df = {'x': x}

sns.histplot(x = x, stat = "density")

Histograma de frecuencias en seaborn con histplot

Histograma de frecuencias

import numpy as np
import seaborn as sns

# Simulación de datos
rng = np.random.RandomState(0)
x = rng.normal(0, 1, size = 1000)
df = {'x': x}

sns.histplot(x = x, stat = "frequency")

Número y grosor de barras o clases

Cuando se crea un histograma con seaborn el número de clases (barras) se calcula automáticamente con la función numpy.histogram_bin_edges, cuyo estimador por defecto se llama "auto" y es el máximo de los estimadores "sturges" (método de Sturges) y "fd" (Freedman Diaconis). Sin embargo, existen diferentes maneras de calcular o indicar el número de barras del histograma resultante.

Binwidth

Es posible seleccionar el ancho de las barras con el argumento binwidth, tal y como se muestra a continuación.

import numpy as np
import seaborn as sns

# Simulación de datos
rng = np.random.RandomState(0)
x = rng.normal(0, 1, size = 1000)
df = {'x': x}

sns.histplot(x = x, binwidth = 0.5)

Establecer el ancho de las barras de un histograma en seaborn

Número de clases o barras

También puedes utilizar el argumento bins para seleccionar cualquier número de clases de igual grosor para ser usado en la visualización gráfica.

import numpy as np
import seaborn as sns

# Simulación de datos
rng = np.random.RandomState(0)
x = rng.normal(0, 1, size = 1000)
df = {'x': x}

sns.histplot(x = x, bins = 5)

Elegir el número de barras o clases de un histograma en Python con histplot

Método de Sturges

Ten en cuenta que el argumento bins también acepta palabras clave, que permiten seleccionar entre diferentes estimadores. Algunos de los estimadores más utilizados son el de Sturges, el de Freedman Diaconis o el de Scott. Las posibles opciones son: "auto" (por defecto), "sturges", "fd", "scott", "doane", "stone", "rice" y "sqrt". Revisa la documentación de histogram_bin_edges para obtener detalles adicionales sobre cada método.

import numpy as np
import seaborn as sns

# Simulación de datos
rng = np.random.RandomState(0)
x = rng.normal(0, 1, size = 1000)
df = {'x': x}

sns.histplot(x = x, bins = "sturges")

Histograma en seaborn con el método de Sturges

Personalización del color

Cambiar el color de fondo de las barras de un histograma hecho con la función histplot

Color de fondo

Por defecto, el color de cada barra es azul. Sin embargo, puedes elegir otro color con el argumento color. Ten en cuenta que también puedes modificar la transparencia del color con el argumento alpha de la función.

import numpy as np
import seaborn as sns

# Simulación de datos
rng = np.random.RandomState(0)
x = rng.normal(0, 1, size = 1000)
df = {'x': x}

sns.histplot(x = x,
             color = "red", alpha = 0.5)

Eliminar el color de fondo en la función histplot de seaborn

Eliminar el color de fondo

Si prefieres eliminar el color de fondo puedes establecer el argumento fill como False.

import numpy as np
import seaborn as sns

# Simulación de datos
rng = np.random.RandomState(0)
x = rng.normal(0, 1, size = 1000)
df = {'x': x}

sns.histplot(x = x,
             fill = False)

Estilo del borde del histograma en seaborn

Grosor, estilo y color del borde

Por último, el borde de las barras también se puede personalizar. Puedes cambiar su color con edgecolor, su grosor con linewidth y el estilo de la línea con linestyle.

import numpy as np
import seaborn as sns

# Simulación de datos
rng = np.random.RandomState(0)
x = rng.normal(0, 1, size = 1000)
df = {'x': x}

sns.histplot(x = x,
             edgecolor = "white",
             linewidth = 2)
Fundamentals of Data Visualization

A Primer on Making Informative and Compelling Figures

Comprar en Amazon

También te puede interesar