Histogramas en plotly

La función 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()

Histograma por grupo

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()
Better Data Visualizations

A Guide for Scholars, Researchers, and Wonks

Comprar en Amazon
Storytelling con Datos

Visualización de datos para profesionales

Comprar en Amazon

También te puede interesar