У меня есть набор данных, например,
outcome <- c(rnorm(500, 45, 10), rnorm(250, 40, 12), rnorm(150, 38, 7), rnorm(1000, 35, 10), rnorm(100, 30, 7))
group <- c(rep("A", 500), rep("B", 250), rep("C", 150), rep("D", 1000), rep("E", 100))
reprex <- data.frame(outcome, group)
Я могу построить это как "динамитный" график с:
graph <- ggplot(reprex, aes(x=group, y=outcome, fill=..y..)) +
stat_summary(geom = "bar", fun.y = mean) +
stat_summary(geom = "errorbar", fun.data = mean_cl_normal, width = 0.1)
, давая:
![picture of graph](https://i.stack.imgur.com/VZ1dY.png)
Я также хотел бы добавить под каждым столбцом ярлык, указывающий, сколько наблюдений было в этой группе. Однако я не могу понять, как это сделать. Я пытался:
graph + geom_label (aes(label=paste(..count.., "Obs.", sep=" ")), y=-0.75, size=3.5, color="black", fontface="bold")
, который возвращает
Error in paste(count, "Obs.", sep = " ") :
cannot coerce type 'closure' to vector of type 'character'
Я также пытался
graph + stat_summary(aes(label=paste(..y.., "Obs.", sep=" ")), fun.y=count, geom="label")
, но это возвращает:
Error: stat_summary requires the following missing aesthetics: y
Я знаю, что смогу сделать это, если сначала создам информационный кадр сводной статистики, но это приведет к тому, что я создам новый информационный кадр каждый раз, когда мне понадобится график, и поэтому в идеале я хотел бы иметь возможность построить это с помощью stat_summary (). из исходного набора данных.
Кто-нибудь знает, как это сделать?