multiple examples espaƱol boxplots r ggplot2

examples - Boxplot muestra el valor de la media



boxplot r outliers (4)

En este diagrama de caja podemos ver la media, pero ¿cómo podemos tener también el valor numérico en la gráfica para cada media de cada diagrama de caja?

ggplot(data=PlantGrowth, aes(x=group, y=weight, fill=group)) + geom_boxplot() + stat_summary(fun.y=mean, colour="darkred", geom="point", shape=18, size=3,show_guide = FALSE)


El camino de Magrittr

Sé que ya hay una respuesta aceptada, pero quería mostrar una forma genial de hacerlo en un solo comando con la ayuda del paquete magrittr .

PlantGrowth %$% # open dataset and make colnames accessible with ''$'' split(weight,group) %T>% # split by group and side-pipe it into boxplot boxplot %>% # plot lapply(mean) %>% # data from split can still be used thanks to side-pipe ''%T>%'' unlist %T>% # convert to atomic and side-pipe it to points points(pch=18) %>% # add points for means to the boxplot text(x=.+0.06,labels=.) # use the values to print text

Este código producirá un diagrama de caja con medios impresos como puntos y valores:

Dividí el comando en varias líneas para poder comentar lo que hace cada parte, pero también se puede ingresar como un delineador. Puedes aprender más sobre esto en mi gist .


Primero, puedes calcular el grupo significa con aggregate :

means <- aggregate(weight ~ group, PlantGrowth, mean)

Este conjunto de datos se puede usar con geom_text :

library(ggplot2) ggplot(data=PlantGrowth, aes(x=group, y=weight, fill=group)) + geom_boxplot() + stat_summary(fun.y=mean, colour="darkred", geom="point", shape=18, size=3,show_guide = FALSE) + geom_text(data = means, aes(label = weight, y = weight + 0.08))

Aquí, + 0.08 se usa para colocar la etiqueta sobre el punto que representa la media.

Una versión alternativa sin ggplot2 :

means <- aggregate(weight ~ group, PlantGrowth, mean) boxplot(weight ~ group, PlantGrowth) points(1:3, means$weight, col = "red") text(1:3, means$weight + 0.08, labels = means$weight)


Puede usar el valor de salida de stat_summary()

ggplot(data=PlantGrowth, aes(x=group, y=weight, fill=group)) + geom_boxplot() + stat_summary(fun.y=mean, colour="darkred", geom="point", hape=18, size=3,show_guide = FALSE) + stat_summary(fun.y=mean, colour="red", geom="text", show_guide = FALSE, vjust=-0.7, aes( label=round(..y.., digits=1)))


También puede usar una función dentro de stat_summary para calcular la media y el argumento hjust para colocar el texto, necesita una función adicional pero no un marco de datos adicional:

fun_mean <- function(x){ return(data.frame(y=mean(x),label=mean(x,na.rm=T)))} ggplot(PlantGrowth,aes(x=group,y=weight)) + geom_boxplot(aes(fill=group)) + stat_summary(fun.y = mean, geom="point",colour="darkred", size=3) + stat_summary(fun.data = fun_mean, geom="text", vjust=-0.7)