请教各位大牛,我想作一幅不同分组的误差条图,并将每一分组的均值线段连起,在重复画线段时不知如何写for()循环。代码如下。数据用的是multcomp自带数据集cholesterol 。
数据准备
cholesterol %>%
group_by(trt) %>%
summarize(Mean = mean(response),
Sd = sd(response)
) %>%
mutate(
ymin = Mean - 1.96*Sd/sqrt(n()),
ymax = Mean + 1.96*Sd/sqrt(n())
) -> my_d
图形绘制
ggplot(data = my_d, aes(trt, Mean))+geom_point(color = 'red', size = 2, shape = 21) +
geom_errorbar(aes(trt, ymin =ymin, ymax = ymax), width = 0.15, color = 'blue') +
geom_segment(aes(x = trt[1], y = Mean[1], xend = trt[2], yend = Mean[2]), lty = 2) +
geom_segment(aes(x = trt[2], y = Mean[2], xend = trt[3], yend = Mean[3]), lty = 2) +
geom_segment(aes(x = trt[3], y = Mean[3], xend = trt[4], yend = Mean[4]), lty = 2) +
geom_segment(aes(x = trt[4], y = Mean[4], xend = trt[5], yend = Mean[5]), lty = 2)
就是想将geom_segment用一个循环代替。我自己写的是产了了4幅图。
for(i in 1:(length(my_d$trt)-1)){
p<- ggplot(data = my_d, aes(trt, Mean))+geom_point(color = 'red', size = 2, shape = 21) +
geom_errorbar(aes(trt, ymin =ymin, ymax = ymax), width = 0.15, color = 'blue') +
geom_segment(aes(x = trt[i], y = Mean[i], xend = trt[i+1], yend = Mean[i+1]), lty = 2)
print(p)
}
请教各位大牛如何解决这个问题。