как отобразить значения средних в функции R ggdensity? - PullRequest
1 голос
/ 23 апреля 2020

есть идеи, как отобразить значения da sh строк (средних) в графиках c ниже?

Большое спасибо.

library(ggpubr)
#> Loading required package: ggplot2
#> Loading required package: magrittr
# Create some data format
# :::::::::::::::::::::::::::::::::::::::::::::::::::
set.seed(1234)
wdata = data.frame(
   sex = factor(rep(c("F", "M"), each=200)),
   weight = c(rnorm(200, 55), rnorm(200, 58)))
head(wdata, 4)
#>   sex   weight
#> 1   F 53.79293
#> 2   F 55.27743
#> 3   F 56.08444
#> 4   F 52.65430

# Density plot with mean lines and marginal rug
# :::::::::::::::::::::::::::::::::::::::::::::::::::
# Change outline and fill colors by groups ("sex")
# Use custom palette
ggdensity(wdata, x = "weight",
   add = "mean", rug = TRUE,
   color = "sex", fill = "sex",
   palette = c("#00AFBB", "#E7B800"))

enter image description here

1 Ответ

1 голос
/ 23 апреля 2020

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

aggregate(weight~sex, data = wdata, FUN = mean)

  sex   weight
1   F 54.94224
2   M 58.07325

А здесь ее использование внутри geom_text:

ggdensity(wdata, x = "weight",
          add = "mean", rug = TRUE,
          color = "sex", fill = "sex",
          palette = c("#00AFBB", "#E7B800"))+
  geom_text(data = aggregate(weight~sex, data = wdata, FUN = mean),
            aes(x = weight, y = Inf, color = sex, label = round(weight,2)), 
            vjust = 1)

enter image description here

Отвечает ли он на ваш вопрос?

...