在R中绘制含双因子(分组+性别)及误差棒的散点图求助
修改建议

你在R中绘制散点图时,要实现按性别区分颜色并展示对应置信区间误差棒,当前代码存在几个关键问题,以下是调整方案:
问题核心
aes中color=sex被错误嵌套在reorder函数参数里,没有生效geom_jitter硬编码了固定颜色,无法体现性别分组- 均值点和误差棒未按性别分组计算,且未设置避让导致重叠
修改后代码
ggplot(data, aes(x = reorder(group_general, weight, FUN = mean), y = weight, color = sex)) + # 抖动点按性别区分颜色,移除硬编码colour geom_jitter(alpha = 1, width = 0.1) + # 均值点按性别分组,设置避让避免重叠 geom_point(stat = "summary", fun = "mean", position = position_dodge(width = 0.2)) + # 误差棒按性别分组计算95%CI,同步避让设置 geom_errorbar(stat = "summary", fun.data = "mean_se", fun.args = list(mult = 1.96), width = 0.1, position = position_dodge(width = 0.2)) + labs(x = "Group", y = "weight(mean + 95%CI)") + theme_bw() + theme(axis.text.x = element_text(angle = 45, hjust = 1))
关键调整说明
- 将
color=sex移到顶层aes中,让所有几何对象都继承性别颜色映射 - 删除
geom_jitter中的colour="lightblue",使其按性别显示不同颜色 - 给
geom_point和geom_errorbar添加position_dodge,让同组内不同性别的点和误差棒错开,避免重叠 - 修正
reorder的写法,把错误嵌套的color=sex从reorder参数中移除
修改后图表会按性别区分颜色,同时每个分组内的性别均值和置信区间会分别展示,不会混在一起。
内容的提问来源于stack exchange,提问作者mervet
相关产品推荐
相关产品推荐

