如何将ggplot中的误差棒图层置于散点图层下方?
解决ggplot误差棒覆盖散点的问题
当然可以做到,核心是利用ggplot图层堆叠顺序的特性:代码里先添加的图层会显示在下方,后添加的会覆盖在上方。你原来的代码里geom_errorbar是最后添加的,所以会跑到散点上面,只需要调整它的位置,把它放在geom_point之前就行。
修改后的完整代码:
# 生成模拟数据集,包含x、value、SE和variable列 data <- data.frame( x = rep(1:5, 3), value = c(2,4,NA,6,2,3,5,4,3,6,9,7,4,3,5), SE = c(0.2,0.3,0.2,0.3,0.2, 0.2,0.3,0.2,0.3,0.2,0.2,0.3,0.2,0.3,0.2), variable = rep(paste0('series', 1:3), each=5) ) # 绘图:调整图层顺序,让误差棒在散点下方 ggplot(data = data, aes(x=x, y=value, group = variable)) + geom_line(colour = "black") + # 把误差棒移到散点前面,这样散点会覆盖它 geom_errorbar(aes(ymin=value-SE, ymax=value+SE), colour="black", width=.2) + geom_point(aes(shape=variable, color=variable, fill = variable), size=2) + scale_shape_manual(values=c(21, 22, 23))+ scale_color_manual(values=c('black','black', 'black'))+ scale_fill_manual(values= c('#999999','#E69F00', '#56B4E9')) + theme_classic() + theme( panel.border = element_rect(colour = "black", fill=NA, size=1), legend.justification=c(1,1), legend.position=c(1,1) ) + geom_vline(xintercept=3, linetype="dotted")
这样调整后,误差棒就会显示在散点的后方,不会再穿过带颜色的标记点了。
内容的提问来源于stack exchange,提问作者confusedindividual
相关产品推荐
相关产品推荐

