Вы можете сделать это в вызове ggplot, используя stat_summaryh
из пакета ggstance
.В приведенном ниже коде я также изменил scale_colour_manual
на scale_fill_manual
в предположении, что вы пытаетесь установить цвета заливки столбцов гистограммы:
library(tidyverse)
library(ggstance)
ggplot(mtcars, aes(x=wt))+
geom_histogram(bins = 20,aes(fill = factor(cyl)))+
stat_summaryh(fun.x=mean, geom="vline", aes(xintercept=..x.., y=0),
colour="grey40") +
facet_grid(.~cyl)+
scale_fill_manual(values = c('red','green','blue')) +
theme_bw()
Другой вариант - рассчитать желаемое значение в пределах geom_vline
(это реализация итогового подхода, предложенного @Ben).В приведенном ниже коде .
- это местоимение, которое относится к фрейму данных (в данном случае mtcars
), который был передан в ggplot:
ggplot(mtcars, aes(x=wt))+
geom_histogram(bins = 20,aes(fill = factor(cyl)))+
geom_vline(data = . %>% group_by(cyl) %>% summarise(wt=mean(wt)),
aes(xintercept=wt), colour="grey40") +
facet_grid(.~cyl)+
scale_fill_manual(values = c('red','green','blue')) +
theme_bw()