Considera el conjunto de datos chickwts, que contiene una variable numérica (weight) con el peso de las gallinas de un experimento y una variable categórica (feed) con el tipo de alimentación para cada animal.
# Conjunto de datos de ejemplo
df <- chickwts
Gráfico de violín por defecto
Los gráficos de violín son una alternativa a los gráficos de caja que se pueden crear en R base con la librería vioplot. Para crear un gráfico de violín por grupo tendrás que pasar una fórmula, tal que y ~ x, siendo y una variable numérica y x una variable categórica que contiene grupos.
# install.packages("vioplot")
library("vioplot")
vioplot(weight ~ feed, data = df)
# Equivalente a:
vioplot(df$weight ~ df$feed)

Gráficos de violín horizontales
Los gráficos de violin por defecto se muestran en vertical, pero es posible crear gráficos de violín horizontales estableciendo el argumento horizontal como TRUE.
# install.packages("vioplot")
library("vioplot")
vioplot(df$weight ~ df$feed,
horizontal = TRUE)

Lados del violín
También puedes dibujar solo uno de los lados de los violines, estableciendo el argumento side como "right" o "left". Ten en cuenta que ambos lados son simétricos y representan la estimación kernel de la densidad de los datos subyacentes. vioplot utiliza una ventana óptima de la función sm.density.compare del paquete sm.
# install.packages("vioplot")
library("vioplot")
vioplot(df$weight ~ df$feed,
side = "right") # o "left"


Color de fondo
Los colores para cada grupo se pueden personalizar con el argumento col. Puedes establecer un color para cada violín pasando un vector de colores o establecer un único color para todos.
# install.packages("vioplot")
library("vioplot")
vioplot(weight ~ feed, data = df,
col = c("#bef7ff", "#a6e2ff", "#8eccff",
"#75b7ff", "#5da1ff", "#458cff"))

Color del borde
El color de borde para cada violín se puede personalizar de la misma manera que el color de fondo. Si quieres eliminar los bordes establece border = NA.
# install.packages("vioplot")
library("vioplot")
vioplot(weight ~ feed, data = df,
col = c("#bef7ff", "#a6e2ff", "#8eccff",
"#75b7ff", "#5da1ff", "#458cff"),
border = NA)
También te puede interesar