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