Librería

ggbeeswarm

Autor principal

Erik Clarke

Datos de muestra

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))

Beeswarms en ggplot2 con 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()

Usando la función 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)

Gráficos beeswarm con el paquete ggbeeswarm

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)

Beeswarm en ggplot2

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")

Cambiar los colores de un beeswarm por grupo en ggplot2

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")

Método de prioridad density de un beeswarm

Agregando ruido cuasi-aleatorio con 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.

Usando la función geom_quasirandom de ggbeeswarm

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()

Observaciones con ruido pero sin solapamiento en ggplot2

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()

Métodos

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 pseudorandom de un beeswarm en R

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 smiley para distribuir los puntos en ggbeeswarm

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")

Método frownet de ggbeeswarm para evitar sobrescribir las observaciones

También te puede interesar