En este tutorial vamos a utilizar el siguiente data frame, cuya primera columna es una variable numérica y la segunda una variable categórica representando grupos.
# Datos de muestra
set.seed(136)
df <- data.frame(y = rnorm(300),
grupo = sample(LETTERS[1:3],
size = 300,
replace = TRUE))
geom_boxplot
Para crar un box plot agrupado en R necesitas pasar las variables a aes
y usar el geom geom_boxplot
como en el ejemplo siguiente.
# install.packages("ggplot2")
library(ggplot2)
# Box plot por grupo
ggplot(df, aes(x = grupo, y = y)) +
geom_boxplot()
stat_boxplot
Como ya habrás notado, los diagramas de caja en ggplot2 no añaden los líneas de las barras de error por defecto. Si quieres agregarlas usa stat_boxplot
y establece geom = "errorbar"
. El ancho de las barras se puede personalizar con el argumento width
.
# install.packages("ggplot2")
library(ggplot2)
# Box plot por grupo con barras de error
ggplot(df, aes(x = grupo, y = y)) +
stat_boxplot(geom = "errorbar", # Barras error
width = 0.25) + # Grosor barras
geom_boxplot()
Los diagramas de caja y bigotes también se pueden mostrar en modo horizontal. Para lograrlo puedes cambiar el orden de las variables dentro de aes
o usar coord_flip
, tal y como se muestra a continuación.
Opción 1: cambiar el orden de las variables.
Establece la variable categórica en el eje Y.
# install.packages("ggplot2")
library(ggplot2)
# Box plot horizontal en ggplot2
ggplot(df, aes(x = y, y = grupo)) +
stat_boxplot(geom = "errorbar",
width = 0.25) +
geom_boxplot()
Opción 2: usa coord_flip
.
coord_flip
invertirá los ejes, por lo que un box plot vertical se convertirá en horizontal y viceversa.
# install.packages("ggplot2")
library(ggplot2)
# Box plot horizontal
ggplot(df, aes(x = grupo, y = y)) +
stat_boxplot(geom = "errorbar",
width = 0.25) +
geom_boxplot() +
coord_flip()
Si pasas la variable categórica al argumento fill
de aes
, cada box plot se coloreará de un color y se mostrará una leyenda.
# install.packages("ggplot2")
library(ggplot2)
ggplot(df, aes(x = grupo, y = y, fill = grupo)) +
stat_boxplot(geom = "errorbar",
width = 0.25) +
geom_boxplot()
Los colores de los diagramas de caja y bigotes son completamente personalizables. En los siguientes ejemplos estamos estableciendo un color para cada grupo, cambiando el color del borde de las cajas y estableciendo el color de los atípicos como negro.
# install.packages("ggplot2")
library(ggplot2)
# Colores de las cajas
cols <- c("#CFD8DC", "#90A4AE", "#455A64")
ggplot(df, aes(x = grupo, y = y, fill = grupo)) +
stat_boxplot(geom = "errorbar",
width = 0.25) +
geom_boxplot(alpha = 0.8, # Transparencia
colour = "#474747", # Color del borde
outlier.colour = 1) + # Color atípicos
scale_fill_manual(values = cols) # Colores de las cajas
Cambiar el título
Puedes cambiar el título por defecto de la leyenda con la función guides
.
# install.packages("ggplot2")
library(ggplot2)
ggplot(df, aes(x = grupo, y = y, fill = grupo)) +
stat_boxplot(geom = "errorbar", width = 0.25) +
geom_boxplot() +
guides(fill = guide_legend(title = "Título"))
Cambiar las etiquetas
Los textos de la leyenda son los niveles de la variable categórica. Puedes sobrescribirlos con scale_fill_hue
.
# install.packages("ggplot2")
library(ggplot2)
ggplot(df, aes(x = grupo, y = y, fill = grupo)) +
stat_boxplot(geom = "errorbar", width = 0.25) +
geom_boxplot() +
scale_fill_hue(labels = c("G1", "G2", "G3"))
Eliminar la leyenda
Si no quieres que se muestre la leyenda puedes eliminarla con theme(legend.position = "none")
.
# install.packages("ggplot2")
library(ggplot2)
ggplot(df, aes(x = grupo, y = y, fill = grupo)) +
stat_boxplot(geom = "errorbar", width = 0.25) +
geom_boxplot() +
theme(legend.position = "none")
También te puede interesar