Considera el conjunto de datos ToothGrowth y transforma la columna dose en un factor.
# Conjunto de datos de muestra
df <- ToothGrowth
df$dose <- as.factor(df$dose)
stat_summary
Para añadir la media a un gráfico de violín tendrás que usar la función stat_summary y especificar la función a ser calculada, el geom a ser usado y los argumentos del geom.
Media como un punto
En caso de que quieras mostrar la media con puntos puedes pasar la función mean y establecer "point" como geom. Recuerda que puedes personalizar otros argumentos como shape (forma) y size (tamaño).
# install.packages("ggplot2")
library(ggplot2)
ggplot(df, aes(x = dose, y = len)) +
geom_violin() +
stat_summary(fun = "mean",
geom = "point",
color = "red")

Media como una linea
Si prefieres una línea horizontal establece geom = "crossbar". En este escenario puedes especificar el color, el ancho o el tipo de línea.
# install.packages("ggplot2")
library(ggplot2)
ggplot(df, aes(x = dose, y = len)) +
geom_violin() +
stat_summary(fun = "mean",
geom = "crossbar",
width = 0.5,
colour = "red")

Media como crossbar
También puedes agregar intervalos de confianza a la media. Para ello tienes que pasar una función (a fun.data) que calcule los intervalos de confianza para la media, como mean_cl_boot para un bootstrap no paramétrico. Escribe ?mean_cl_boot para obtener información sobre más funciones relacionadas.
# install.packages("ggplot2")
library(ggplot2)
ggplot(df, aes(x = dose, y = len)) +
geom_violin() +
stat_summary(fun.data = "mean_cl_boot", geom = "crossbar",
colour = "red", width = 0.2)

Media con barras de error
La desviación típica también se puede mostrar con barras de error (point range) en lugar de con un crossbow.
# install.packages("ggplot2")
library(ggplot2)
ggplot(df, aes(x = dose, y = len)) +
geom_violin() +
stat_summary(fun.data = "mean_cl_boot", geom = "pointrange",
colour = "red")


Media y mediana
Si agregas otra capa con stat_summary pero con la mediana puedes tener ambas métricas. Puedes establecer el geom que quieras como en la sección anterior.
# install.packages("ggplot2")
library(ggplot2)
ggplot(df, aes(x = dose, y = len)) +
geom_violin() +
stat_summary(fun = "mean",
geom = "point",
color = "red") +
stat_summary(fun = "median",
geom = "point",
color = "blue")

Media y mediana (con leyenda)
Ten en cuenta que estableciendo un aes se creará una leyenda. Esta leyenda se puede personalizar, por ejemplo, con scale_color_manual.
# install.packages("ggplot2")
library(ggplot2)
ggplot(df, aes(x = dose, y = len)) +
geom_violin() +
stat_summary(fun = "mean",
geom = "point",
aes(color = "Mean")) +
stat_summary(fun = "median",
geom = "point",
aes(color = "Median")) +
scale_colour_manual(values = c("red", "blue"), # Colores
name = "") # Eliminar el título de la leyenda
También te puede interesar