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)
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")
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")
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")
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")
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")
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")
También te puede interesar