histogram
de plotly
Los histogramas se utilizan para representar la distribución de una variable numérica. Al utilizar plotly, puedes usar la función histogram
de plotly express para crear histogramas de manera sencilla. Tendrás que pasar tu variable de entrada al argumento x
para crear un histograma vertical. Los datos también se pueden pasar como una columna de un data frame de pandas. Por defecto, la función creará un histograma de frecuencias.
import plotly.express as px
import numpy as np
np.random.seed(5)
fig = px.histogram(x = np.random.normal(0, 1, 100))
# Alternativa: columna de un data frame de pandas
# import pandas as pd
# df = pd.DataFrame({'x': np.random.normal(0, 1, 100)})
# Histograma a partir de un data frame
# fig = px.histogram(df, x = "x")
fig.show()
Histograma horizontal
Si quieres crear un histograma horizontal en lugar de vertical tan solo tienes que pasar tus datos de entrada a y
en lugar de a x
.
import plotly.express as px
import numpy as np
np.random.seed(5)
fig = px.histogram(y = np.random.normal(0, 1, 100))
fig.show()
Histograma de densidad
El histograma creado por defecto con histogram
es un histograma de frecuencias. Sin embargo, puedes establecer el argumento histnorm
a 'probability density'
para crear un histograma de densidad. Otras posibles opciones son: 'percent'
, 'probability'
y 'density'
.
import plotly.express as px
import numpy as np
np.random.seed(5)
fig = px.histogram(x = np.random.normal(0, 1, 100),
histnorm = 'probability density')
fig.show()
Título y etiquetas de los ejes
Puedes agregar un título al gráfico con title
y personalizar las etiquetas por defecto de los ejes pasando un diccionario a labels
, como se muestra a continuación.
import plotly.express as px
import numpy as np
np.random.seed(5)
fig = px.histogram(x = np.random.normal(0, 1, 100),
title = 'Histograma de x',
labels = {'x': 'X-axis', 'y': 'Y-axis'})
fig.show()
Número de clases
El número de clases del histograma se selecciona de manera automática en base a los datos de entrada, pero puedes establecer el número que quieras con nbins
.
import plotly.express as px
import numpy as np
np.random.seed(5)
fig = px.histogram(x = np.random.normal(0, 1, 100), nbins = 50)
fig.show()
Etiquetas
La función histogram
también proporciona un argumento llamado text_auto
que muestra el conteo para cada clase cuando se establece como True
.
import plotly.express as px
import numpy as np
np.random.seed(5)
fig = px.histogram(x = np.random.normal(0, 1, 100), text_auto = True)
fig.show()
Color de las barras del histograma
El color de las barras se puede personalizar con el argumento color_discrete_sequence
. Además, con el argumento opacity
puedes controlar el grado de transparencia del color.
import plotly.express as px
import numpy as np
np.random.seed(5)
fig = px.histogram(x = np.random.normal(0, 1, 100),
color_discrete_sequence = ['firebrick'],
opacity = 0.5)
fig.show()
Método ‘relative’ (por defecto)
Si pasas una variable categórica que represente grupos a color
podrás crear un histograma por grupo. El método utilizado por defecto se llama 'relative'
, donde las barras se apilan sobre cero para valores positivos y por debajo para valores negativos.
import plotly.express as px
import numpy as np
import pandas as pd
np.random.seed(5)
df = pd.DataFrame({'x': np.random.normal(0, 1, 100),
'grupo': np.repeat(np.array(["G1", "G2"]), [50, 50], axis = 0)})
fig = px.histogram(df, x = 'x', color = 'grupo')
fig.show()
Recuerda que puedes utilizar los argumentos color_discrete_map
o color_discrete_sequence
para personalizar el color de las barras para cada grupo.
import plotly.express as px
import numpy as np
import pandas as pd
np.random.seed(5)
df = pd.DataFrame({'x': np.random.normal(0, 1, 100),
'grupo': np.repeat(np.array(["G1", "G2"]), [50, 50], axis = 0)})
fig = px.histogram(df, x = 'x', color = 'grupo',
color_discrete_map = {'G1': 'green', 'G2': 'orange'})
fig.show()
Método ‘overlay’
El método por defecto se puede personalizar a través del argumento barmode
. Cuando se establece como 'overlay'
los grupos solaparán.
import plotly.express as px
import numpy as np
import pandas as pd
np.random.seed(5)
df = pd.DataFrame({'x': np.random.normal(0, 1, 100),
'grupo': np.repeat(np.array(["G1", "G2"]), [50, 50], axis = 0)})
fig = px.histogram(df, x = 'x', color = 'grupo', barmode = 'overlay')
fig.show()
Método ‘group’
El método group
mostará las barras para cada grupo unas al lado de las otras.
import plotly.express as px
import numpy as np
import pandas as pd
np.random.seed(5)
df = pd.DataFrame({'x': np.random.normal(0, 1, 100),
'grupo': np.repeat(np.array(["G1", "G2"]), [50, 50], axis = 0)})
fig = px.histogram(df, x = 'x', color = 'grupo', barmode = 'group')
fig.show()
Método ‘stack’
El último método disponible se llama stack
, que apilará las barras para los diferentes grupos.
import plotly.express as px
import numpy as np
import pandas as pd
np.random.seed(5)
df = pd.DataFrame({'x': np.random.normal(0, 1, 100),
'grupo': np.repeat(np.array(["G1", "G2"]), [50, 50], axis = 0)})
fig = px.histogram(df, x = 'x', color = 'grupo', barmode = 'stack')
fig.show()
También te puede interesar