R中position_dodge2(0.9)失效:柱状图误差条重叠问题求助
解决ggplot柱状图误差条重叠问题
你的问题核心是误差条未与柱状图使用相同的分组映射规则,且position_dodge2参数在两者间未统一,导致偏移逻辑不一致,最终出现重叠。
关键修复步骤:
- 给
geom_errorbar的aes中添加与柱状图一致的分组变量(fill=Matrix和alpha=Fermented/Raw``),让误差条按照柱状图的分组规则进行偏移; - 统一
geom_bar和geom_errorbar的position_dodge2参数,确保两者的宽度和偏移量完全匹配。
修改后的完整代码:
DataR2 <- read_excel("file.xlsx") ggplot(data=DataR2, aes(x=Samples, y=`Protein (%) iso + lit factors`)) + geom_bar(stat = "identity", aes(fill=Matrix, colour = Matrix, alpha=`Fermented/Raw`), position = position_dodge2(width = 0.9)) + # 统一width参数 theme_classic() + scale_alpha_discrete(range = c(0.4, 1)) + theme(text = element_text(size=10), axis.text.x = element_text(angle=90, hjust=1, vjust = 0.5)) + geom_errorbar(aes(x=Samples, ymin = `Protein (%) iso + lit factors` - `SDProtein ufærdig`, ymax = `Protein (%) iso + lit factors` + `SDProtein ufærdig`, fill=Matrix, alpha=`Fermented/Raw`), # 添加对应分组映射 width=0.3, position=position_dodge2(width = 0.9)) + # 与柱状图width保持一致 scale_y_continuous("Protein (%) iso + lit", limits=c(0, 10), n.breaks = 15)+ # 调整y轴范围避免数据截断 scale_fill_manual(values=c('#3335ef','#36ffff', '#fe3637','#e7a4e3', '#2be436'))+ scale_color_manual(values=c('#6d6d6d','#6d6d6d', '#6d6d6d','#6d6d6d', '#6d6d6d'))
额外提示:
你原代码中y轴上限设为3.75,但样本里存在如ID001.F.H发酵组的蛋白质含量(9.21)远高于此值,会导致柱状图被截断,示例中已调整为0-10,可根据实际数据再优化。
内容的提问来源于stack exchange,提问作者Helin
相关产品推荐
相关产品推荐

