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