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)
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)
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)
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")
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")
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
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
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")
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)
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)
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")
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
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)
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)
También te puede interesar