我生成了一个带有geom_col()的条形图,其中两个类用颜色分隔 . 然后我尝试为每个类添加一个平均线 .
这是我想得到的:
但是使用下面的代码,每个柱的平均线是独立于我对组参数的放置 .
这是一个可重复的例子:
library(tidyverse)
df = data.frame(
x = 1:10,
y = runif(10),
class = sample(c("a","b"),10, replace=T) %>% factor()
) %>%
mutate(x = factor(x, levels=x[order(class, -y)]))
ggplot(df, aes(x, y, fill=class)) +
geom_col() +
stat_summary(fun.y = mean, geom = "errorbar",
aes(ymax = ..y.., ymin = ..y.., group = class),
width = 1, linetype = "solid")
请告诉我我做错了什么 . 或者任何其他方式(用ggplot)来实现这个目标?
2 回答
创建一个新的
data.frame
(添加组均值)并对其进行一些操作(使用top_n
和cbind
),然后使用它们为geom_segment
提供必要的美学:我使用`geom_errorbar将@bouncyball的解决方案与我原来的方法结合起来 .
这是代码:
唯一的问题是,这种方法不是单行,而是生成大量的线对象,这些对象在编辑绘图时可以看到,例如,在Adobe Illustrator中 . 但我可以忍受它 .