You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

在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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.24 06:06:03