El siguiente data frame contiene la medida de una variable para tres grupos diferentes. Usaremos estos datos en los ejemplos de este tutorial.
# Datos de muestra
set.seed(1995)
y <- round(rnorm(200), 1)
df <- data.frame(y = y,
grupo = sample(c("G1", "G2", "G3"),
size = 200,
replace = TRUE))
geom_beeswarm
El paquete ggbeeswarm
contiene una función llamada geom_beeswarm
, que puede ser usada para crear un beeswarm en ggplot2.
# install.packages("ggplot2")
library(ggplot2)
# install.packages("ggbeeswarm")
library(ggbeeswarm)
# Beeswarm básico en ggplot2
ggplot(df, aes(x = grupo, y = y)) +
geom_beeswarm()
Tamaño y escala
Por defecto las observaciones se muestran muy cerca unas de otras. Puedes usar el argumento cex
para incrementar el espacio entre ellas y size
para incrementar el tamaño de los puntos.
# install.packages("ggplot2")
library(ggplot2)
# install.packages("ggbeeswarm")
library(ggbeeswarm)
# Beeswarm en ggplot2
ggplot(df, aes(x = grupo, y = y)) +
geom_beeswarm(cex = 3)
Color por grupo
Al igual que sucede con otros gráficos de ggplot2 si quieres colorear las observaciones por grupo puedes pasar la variable categórica al argumento color
o colour
de aes
.
# install.packages("ggplot2")
library(ggplot2)
# install.packages("ggbeeswarm")
library(ggbeeswarm)
# Beeswarm en ggplot2
ggplot(df, aes(x = grupo, y = y, color = grupo)) +
geom_beeswarm(cex = 3)
Cambiar los colores
Si coloreas las observaciones por grupo se usará una escala de colores por defecto. Puedes cambiar los colores con scale_color_brewer
, scale_color_manual
o una escala de color equivalente.
# install.packages("ggplot2")
library(ggplot2)
# install.packages("ggbeeswarm")
library(ggbeeswarm)
# Beeswarm en ggplot2
ggplot(df, aes(x = grupo, y = y, color = grupo)) +
geom_beeswarm(cex = 3) +
scale_color_brewer(palette = "Set1")
Métodos de prioridad
Para que se realicen los cálculos necesarios para crear el beeswarm es necesario elegir un método de prioridad. Por defecto se utiliza el método "ascending"
pero puedes cambiarlo con el argumento priority
. Las otras posibles opciones son "descending"
, "density"
, "random"
y "none"
.
# install.packages("ggplot2")
library(ggplot2)
# install.packages("ggbeeswarm")
library(ggbeeswarm)
# Beeswarm en ggplot2
ggplot(df, aes(x = grupo, y = y, color = grupo)) +
geom_beeswarm(cex = 3,
priority = "density")
geom_quasirandom
La librería ggbeeswarm
también contiene geom_quasirandom
, que dibuja observaciones con ruido de manera similar a geom_jitter
pero reduciendo el solapamiento de los puntos usando una secuencia de van der Corput o texturizado de Tukey.
Para agregar los puntos de datos con ruido sin solapamiento usa la función geom_quasirandom
tal y como se muestra a continuación.
# install.packages("ggplot2")
library(ggplot2)
# install.packages("ggbeeswarm")
library(ggbeeswarm)
# Secuencia de van der Corput o texturizado de Tukey
ggplot(df, aes(x = grupo, y = y)) +
geom_quasirandom()
Color por grupo
Al igual que con geom_beeswarm
puedes colorear las observaciones por grupo de ser necesario, pasando la variable categórica a color
.
# install.packages("ggplot2")
library(ggplot2)
# install.packages("ggbeeswarm")
library(ggbeeswarm)
# Secuencia de van der Corput o texturizado de Tukey
ggplot(df, aes(x = grupo, y = y, color = grupo)) +
geom_quasirandom()
Existen diferentes métodos para distribuir los puntos. Por defecto se usa el método "quasirandom"
pero también puedes seleccionar "pseudorandom"
, "smiley"
o "frowney"
.
Método “pseudorandom”
# install.packages("ggplot2")
library(ggplot2)
# install.packages("ggbeeswarm")
library(ggbeeswarm)
# Método pseudorandom
ggplot(df, aes(x = grupo, y = y)) +
geom_quasirandom(method = "pseudorandom")
Método “smiley”
# install.packages("ggplot2")
library(ggplot2)
# install.packages("ggbeeswarm")
library(ggbeeswarm)
# Método smiley
ggplot(df, aes(x = grupo, y = y)) +
geom_quasirandom(method = "smiley")
Método “frowney”
# install.packages("ggplot2")
library(ggplot2)
# install.packages("ggbeeswarm")
library(ggbeeswarm)
# Método frowney
ggplot(df, aes(x = grupo, y = y)) +
geom_quasirandom(method = "frowney")
También te puede interesar