R语言ggplot绘制不等子组箱线图时叠加散点错位如何解决
解决方案
你遇到的散点不对齐问题,本质是geom_boxplot默认会按照fill分组自动做位置偏移(调用position_dodge()实现),但geom_point默认不做分组偏移,所以会落在主分组的中心位置,只需要统一两者的偏移规则即可:
library(ggplot2) ggplot(data = df, aes(x= G, y= X, fill= SG1))+ geom_boxplot(position = position_dodge(width = 0.75)) + # 明确指定箱线图的分组偏移宽度 geom_point(aes(shape = factor(SG1)), position = position_dodge(width = 0.75)) # 散点使用相同的偏移宽度,和对应箱线完全对齐
如果想要避免同组散点重叠,可替换为带抖动的散点,同时保留对齐规则:
ggplot(data = df, aes(x= G, y= X, fill= SG1))+ geom_boxplot(position = position_dodge(width = 0.75)) + geom_jitter(aes(shape = factor(SG1)), position = position_dodge(width = 0.75), width = 0.1) # 仅控制同组内散点的横向抖动幅度,不影响跨组对齐
参数说明:0.75是ggplot箱线图默认的偏移宽度,如果你手动调整过箱线图的宽度,同步修改两个图层的position_dodge宽度参数即可保持对齐。如果不需要显示SG1的形状图例,可以在代码最后加+ guides(shape = "none")隐藏。
内容的提问来源于stack exchange,提问作者Nidhi Desai
相关产品推荐
相关产品推荐

