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

如何让ggpubr的ggboxplot仅在X轴添加抖动而非Y轴

问题:ggpubr箱线图仅添加X轴抖动,Y轴保持真实数值

我希望使用ggpubr绘制箱线图并添加抖动效果,但默认的抖动会同时作用于Y轴,这会让观者产生混淆。

环境设置

library(ggpubr)
library(tibble)

df <- tibble(
  group = rep(c("Group1", "Group2", "Group3"), each = 10),
  value = sample(0:3, 30, replace = TRUE) # 生成30个重复抽样的样本
)

现有绘图代码及效果

默认抖动图(X、Y轴同时抖动)

ggboxplot(df, x = "group", y = "value", add = "jitter", color = "group", palette = "jco") +
  rremove("x.text") +
  rremove("xlab") +
  rotate_x_text(angle = 45)

默认抖动图(X、Y轴同时抖动)

点图(Y轴位置反映真实数值)

ggboxplot(df, x = "group", y = "value", add = "dotplot", color = "group", palette = "jco") +
  rremove("x.text") +
  rremove("xlab") +
  rotate_x_text(angle = 45)

点图(Y轴位置反映真实数值)

解决方案:仅X轴添加抖动

要实现仅X轴抖动、Y轴保持真实数值的效果,有两种常用方法:

方法1:自定义add参数为geom_jitter并设置height=0

直接在ggboxplot中添加geom_jitter层,指定height=0关闭Y轴抖动,通过width调整X轴抖动幅度:

ggboxplot(df, x = "group", y = "value", color = "group", palette = "jco") +
  geom_jitter(aes(color = group), width = 0.2, height = 0) + # width可根据需求调整
  rremove("x.text") +
  rremove("xlab") +
  rotate_x_text(angle = 45)

方法2:使用add.params参数控制抖动行为

继续使用add="jitter",通过add.params传入参数关闭Y轴抖动:

ggboxplot(df, x = "group", y = "value", add = "jitter", color = "group", palette = "jco",
          add.params = list(height = 0, width = 0.2)) +
  rremove("x.text") +
  rremove("xlab") +
  rotate_x_text(angle = 45)

这两种方法都能让抖动仅作用于X轴,Y轴的点严格对应真实的value数值,避免观者混淆。


内容的提问来源于stack exchange,提问作者flashton

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.11 17:42:46