Es posible crear gráficos de violín donde cada uno de sus lados represente un subconjunto de datos distinto. Para ello tendrás que dividir tus datos y crear un violín con la función vioplot
donde cada lado represente un subgrupo de los datos.
Considera el conjunto de datos trees
, que contiene tres variables numéricas con la circunferencia, altura y volumen de algunos árboles.
# Conjunto de datos
df <- trees
Divide el conjunto de datos en dos grupos, donde el primero corresponda con los árboles cuyo volumen sea superior a la media y el otro donde sea menor.
Luego, dibuja cada gráfico de violín especificando el lado que quieras con el argumento side
. Tendrás que añadir add = TRUE
en el segundo violín para que el nuevo lado se agregue sobre el primer gráfico.
Ten en cuenta que hemos usado plotCentre = "line"
, por lo que la media se muestra como una línea horizontal, ya que es lo más recomendable para este tipo de violines.
# install.packages("vioplot")
library("vioplot")
# Divide los datos en dos grupos
big_vol <- df[df$Volume >= mean(df$Volume), ]
small_vol <- df[df$Volume < mean(df$Volume), ]
# Dibuja cada lado
vioplot(big_vol,
plotCentre = "line", # Mediana con una línea
side = "right", # Lado derecho
col = "#5773CC") # Color del lado derecho
vioplot(small_vol,
plotCentre = "line", # Mediana con una línea
side = "left", # Lado izquierdo
col = "#FFB900", # Color del lado izquierdo
add = TRUE) # Sobre el gráfico anterior
legend("topleft",
legend = c("Big", "Small"),
fill = c("#5773CC", "#FFB900"))
A pesar de que no se recomienda, también puedes mostrar las medianas como puntos. Si quieres usar esta opción recuerda cambiar el color de los puntos con el argumento colMed
.
# install.packages("vioplot")
library("vioplot")
# Divide los datos en dos grupos
big_vol <- df[df$Volume >= mean(df$Volume), ]
small_vol <- df[df$Volume < mean(df$Volume), ]
# Dibuja cada lado
vioplot(big_vol,
colMed = "green", # Color del punto de la mediana
side = "right", # Lado derecho
col = "#5773CC") # Color del lado derecho
vioplot(small_vol,
colMed = "green", # Color del punto de la mediana
side = "left", # Lado izquierdo
col = "#FFB900", # Color del lado izquierdo
add = TRUE) # Sobre el gráfico anterior
legend("topleft",
legend = c("Big", "Small"),
fill = c("#5773CC", "#FFB900"))
También te puede interesar