box
Puedes crear box plots en plotly con la función box
de plotly express. La sintaxis de la función es muy sencilla, ya que tan solo necesitas pasar una variable numérica a y
para crear un gráfico de cajas vertical. Ten en cuenta que también puedes pasar tus datos como una columna de un data frame.
import plotly.express as px
import numpy as np
# Datos de muestra
np.random.seed(4)
var = np.random.normal(0, 1, 500)
fig = px.box(y = var)
# Alternativa:
# import pandas as pd
# df = pd.DataFrame({'var': np.random.normal(0, 1, 500)})
# fig = px.box(df, y = 'var')
fig.show()
Box plot horizontal
Si lo prefieres, puedes crear un gráfico horizontal. Para ello tendrás que pasar tus datos a x
en lugar de a y
.
import plotly.express as px
import numpy as np
# Datos de muestra
np.random.seed(1)
var = np.random.normal(0, 1, 500)
fig = px.box(x = var)
fig.show()
Intervalos de confianza para la mediana
A los gráficos de caja se les puede agregar unas muescas, llamadas notch en inglés, que representan el intervalo de confianza al 95% para la mediana. Puedes agregarlo a tu gráfico estableciendo notched = True
.
import plotly.express as px
import numpy as np
# Datos de muestra
np.random.seed(4)
var = np.random.normal(0, 1, 500)
fig = px.box(y = var, notched = True)
fig.show()
Observaciones
En ocasiones resulta de interés mostrar las observaciones que generan el gráfico de cajas, ya que diferentes observaciones pueden crear el mismo box plot. Agregarlas te ayudarán a entender la distribución subyacente de los datos. Tendrás que establecer el argumento points
como 'all'
para agregarlos.
import plotly.express as px
import numpy as np
# Datos de muestra
np.random.seed(4)
var = np.random.normal(0, 1, 500)
fig = px.box(y = var, points = 'all')
fig.show()
Eliminar datos atípicos
Si lo necesitas, estableciendo el argumento points
como False
se eliminarán los datos atípicos, en caso de que los haya.
import plotly.express as px
import numpy as np
# Datos de muestra
np.random.seed(4)
var = np.random.normal(0, 1, 500)
fig = px.box(y = var, points = False)
fig.show()
Color
Es posible personalizar el color del box plot pasando un nuevo color al argumento color_discrete_sequence
dentro de un array, tal y como se muestra a continuación.
import plotly.express as px
import numpy as np
# Datos de muestra
np.random.seed(4)
var = np.random.normal(0, 1, 500)
fig = px.box(y = var, color_discrete_sequence = ['green'])
fig.show()
La función box
de plotly permite crear box plots por grupo. Tendrás que pasar tu variable categórica que define los grupos al argumento color
de la función.
import plotly.express as px
import numpy as np
import pandas as pd
import random; random.seed(1)
# Datos de muestra
np.random.seed(4)
df = pd.DataFrame({'var': np.random.normal(0, 1, 500),
'grupo': random.choices(["G1", "G2", "G3"], k = 500)})
fig = px.box(df, y = 'var', color = 'grupo')
fig.show()
El color para cada grupo se puede personalizar pasando un array de colores a color_discrete_sequence
o especificando un color para cada grupo con color_discrete_map
.
import plotly.express as px
import numpy as np
import pandas as pd
import random; random.seed(1)
# Datos de muestra
np.random.seed(4)
df = pd.DataFrame({'var': np.random.normal(0, 1, 500),
'grupo': random.choices(["G1", "G2", "G3"], k = 500)})
fig = px.box(df, y = 'var', color = 'grupo',
color_discrete_map = {'G1': '#90BA4C', 'G2': '#DD9D31', 'G3': '#E25247'})
fig.show()
Ten en cuenta que la función también proporciona un argumento llamado boxmode
que se puede establecer como 'overlay'
para que los gráficos de caja se solapen unos encima de otros. Esto puede ser útil para comparar las medianas para cada grupo cuando el número de grupos es pequeño.
import plotly.express as px
import numpy as np
import pandas as pd
import random; random.seed(1)
# Datos de muestra
np.random.seed(4)
df = pd.DataFrame({'var': np.random.normal(0, 1, 500),
'grupo': random.choices(["G1", "G2", "G3"], k = 500)})
fig = px.box(df, y = 'var', color = 'grupo',
boxmode = 'overlay')
fig.show()
También te puede interesar