Datos de muestra

El siguiente conjunto de datos contiene el efecto de la vitamina C en el crecimiento de los dientes. La columna dose se ha convertido en factor y será usada como variable categórica.

# Conjunto de datos de muestra
df <- ToothGrowth
df$dose <- as.factor(df$dose)

Puntos de datos con ruido aleatorio

Opción 1

Las observaciones se pueden agregar sobre un gráfico de violín con geom_point. Sin embargo, es más recomendable añadirlos con algo de ruido aleatorio con position_jitter, donde seed es el la semilla del generador de números pseudaleatorios (opcional) y width es la cantidad de ruido a lo ancho.

# install.packages("ggplot2")
library(ggplot2)

ggplot(df, aes(x = dose, y = len, fill = dose)) +
  geom_violin(alpha = 0.5) +
  geom_point(position = position_jitter(seed = 1, width = 0.2)) +
  theme(legend.position = "none")

ggplot2 gráfico de violín con puntos

Opción 2

Puedes obtener el mismo resultado usando la función geom_jitter.

# install.packages("ggplot2")
library(ggplot2)

ggplot(df, aes(x = dose, y = len, fill = dose)) +
  geom_violin(alpha = 0.5) +
  geom_jitter(position = position_jitter(seed = 1, width = 0.2)) +
  theme(legend.position = "none")

Gráfico de violín con observaciones en ggplot2

Agregar un dot plot

Gráfico de violín con dot plot en ggplot2

Si quieres crear un gráfico de violín con puntos en ggplot2 puedes usar geom_dotplot, estableciendo binaxis = "y" y stackdir = "center". Ten en cuenta que dotsize controla el tamaño de los puntos.

# install.packages("ggplot2")
library(ggplot2)

ggplot(df, aes(x = dose, y = len, fill = dose)) +
  geom_violin(alpha = 0.5) +
  geom_dotplot(binaxis = "y",
               stackdir = "center",
               dotsize = 0.5) +
  theme(legend.position = "none")

ggplot gráfico de violín con dot plot

Los puntos por defecto son del mismo color que los grupos. Para sobrescribirlo puedes especificar un color dentro de geom_dotplot.

# install.packages("ggplot2")
library(ggplot2)

ggplot(df, aes(x = dose, y = len, fill = dose)) +
  geom_violin(alpha = 0.5) +
  geom_dotplot(binaxis= "y",
               stackdir = "center",
               dotsize = 0.5,
               fill = 1) +
  theme(legend.position = "none")

Agregar un beeswarm

Una alternativa para agregar puntos de datos sobre un gráfico de violín en ggplot2 es usar la función geom_beeswarm del paquete ggbeeswarm.

# install.packages("ggplot2")
# install.packages("ggbeeswarm")
library(ggplot2)
library(ggbeeswarm)

ggplot(df, aes(x = dose, y = len, fill = dose)) +
  geom_violin(alpha = 0.5) +
  geom_beeswarm() +
  theme(legend.position = "none")

Gráfico de violín y beeswarm en ggplot2

La librería ggbeeswarm también contiene una función llamada geom_quasirandom, que puede ser usada para añadir los puntos dentro de los violines, tal y como puedes ver en el siguiente ejemplo.

# install.packages("ggplot2")
# install.packages("ggbeeswarm")
library(ggplot2)
library(ggbeeswarm)

ggplot(df, aes(x = dose, y = len, fill = dose)) +
  geom_violin(alpha = 0.5) +
  geom_quasirandom() +
  theme(legend.position = "none")

Gráfico de violín con puntos de datos dentro de los violines en ggplot2

También te puede interesar