Подтвердить что ты не робот

Boxplot показывает значение среднего

В этом квадратичном квадрате мы можем видеть среднее значение, но как у нас есть также числовое значение на графике для каждого значения каждого квадрата?

 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)
4b9b3361

Ответ 1

Во-первых, вы можете рассчитать групповые средства с помощью aggregate:

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

Этот набор данных можно использовать с 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))

Здесь + 0.08 используется для размещения метки над точкой, представляющей среднее значение.

enter image description here


Альтернативная версия без 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)

введите описание изображения здесь

Ответ 2

Вы можете использовать выходное значение от 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)))

Ответ 3

Вы также можете использовать функцию в stat_summary для вычисления среднего и аргумента hjust для размещения текста, вам нужна дополнительная функция, но нет дополнительного фрейма данных:

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)

enter image description here