У меня есть барплот, где точные значения высоты столбцов находятся в кадре данных.
df <- data.frame(x=LETTERS[1:6], y=c(1:6, 1:6 + 1), g=rep(x = c("a", "b"), each=6))
ggplot(df, aes(x=x, y=y, fill=g, group=g)) +
geom_bar(stat="identity", position="dodge")
Теперь я хочу добавить два hlines отображает среднее значение всех баров в группе.Все, что я получаю с
ggplot(df, aes(x=x, y=y, fill=g, group=g)) +
geom_bar(stat="identity", position="dodge") +
stat_summary(fun.y=mean, aes(yintercept=..y.., group=g), geom="hline")
, это
Поскольку я хочу сделать это для произвольного числа групп,Я был бы признателен за решение только с ggplot.
Я хочу избежать такого решения, потому что оно не зависит исключительно от набора данных, переданного в ggplot, имеет избыточный код и не обладает гибкостью в отношении количества групп:
ggplot(df, aes(x=x, y=y, fill=g, group=g)) +
geom_bar(stat="identity", position="dodge") +
geom_hline(yintercept=mean(df$y[df$g=="a"]), col="red") +
geom_hline(yintercept=mean(df$y[df$g=="b"]), col="green")
Заранее спасибо!
Изменения:
- добавлен набор данных
- комментарий к полученному коду
- изменилданные и участки для уточнения вопроса