Datos

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)

Agregando la media con 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")

ggplot2 gráfico de violín con media

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")

Gráfico de violín en ggplot2 con línea representando la media

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)

Crossbar media geom_violin

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")

Gráfico de violín con media y desviación típica en ggplot2

Media y mediana

Gráfico de violín co nmedia y mediana en ggplot2

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")

Leyendas con stat_summary en ggplot2

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