在R中如何让geom_jitter()抖动点限定在对应箱线图内不与邻箱重叠
解决方法
直接使用以下代码即可实现抖动点和对应箱线对齐,且不会跨组重叠:
library(ggplot2) ggplot(longitudinal, aes(x = Time, y = Values, color = Diagnose, shape = Diagnose)) + geom_boxplot( position = position_dodge(width = 0.8), outlier.shape = NA, width = 0.7 # 可自行调整箱线宽度 ) + geom_jitter( alpha = 0.5, position = position_jitterdodge( dodge.width = 0.8, # 必须和箱线图的dodge.width值完全一致 jitter.width = 0.15, # 同组内点的横向抖动范围,调小可避免超出箱线 seed = 123 # 固定随机种子保证抖动效果可复现 ) )
参数说明
- 核心对齐逻辑是箱线图的
position_dodge(width)必须和position_jitterdodge的dodge.width取值完全相同,如果两个值不匹配就会出现点和箱线错位、全部挤到中间的问题。 jitter.width控制同一诊断分组内点的横向抖动幅度,取值在0.1~0.2之间时,点不会超出当前箱线的横向范围,也不会和相邻分组的点重叠。- 如需调整箱线之间的间距,同时修改两个位置参数的
dodge.width值即可,数值越大同一时间点下的箱线间距越宽。
内容的提问来源于stack exchange,提问作者Pauliinaa
相关产品推荐
相关产品推荐

