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

为分组箱线图添加抖动:消除箱内不同类别点的分离

问题描述

现有如下R代码,意图根据年龄将数据点绘制在每个箱线的左侧(Young,黑色点)或右侧(Old,红色点),但当前生成的图中,箱内黑色与红色点相互分离,无法围绕对应箱线的中线抖动。需求是让两类点分别分布在对应箱线的左右两侧,均围绕中线进行抖动。

原代码如下:

set.seed(100)
df_data <- expand.grid(group=c("A", "B", "C", "D"), size=c("Small", "Large"), age=c("Young", "Old"), stringsAsFactors=T)
df_data <- df_data[rep(c(1:nrow(df_data)), 10),]
df_data <- cbind(df_data, value=rnorm(nrow(df_data)))

p <- ggplot(data=df_data,
            mapping=aes(x=group, y=value)) +
  geom_boxplot(aes(fill=size),
               outlier.shape=NA) +
  scale_fill_manual(values = c(rgb(240,200,200, maxColorValue=255), rgb(198,210,233, maxColorValue=255))) +
  geom_point(aes(shape=size, color=age),
             position=position_jitterdodge()) +
  scale_shape_manual(values=c(16, 16)) +
  scale_color_manual(values=c("black", "red"))
解决方案

要实现目标效果,需调整点的分组逻辑和抖动偏移参数,让年龄作为分组依据控制左右偏移,同时匹配箱线宽度确保对齐。修改后的代码如下:

set.seed(100)
df_data <- expand.grid(group=c("A", "B", "C", "D"), size=c("Small", "Large"), age=c("Young", "Old"), stringsAsFactors=T)
df_data <- df_data[rep(c(1:nrow(df_data)), 10),]
df_data <- cbind(df_data, value=rnorm(nrow(df_data)))

p <- ggplot(data=df_data,
            mapping=aes(x=group, y=value)) +
  geom_boxplot(aes(fill=size),
               outlier.shape=NA,
               width=0.7) + # 统一箱线宽度,方便点偏移对齐
  scale_fill_manual(values = c(rgb(240,200,200, maxColorValue=255), rgb(198,210,233, maxColorValue=255))) +
  geom_point(aes(shape=size, color=age, group=age), # 指定分组为年龄,让偏移基于年龄组
             position=position_jitterdodge(
               dodge.width=0.7, # 匹配箱线宽度,确保点在箱线范围内偏移
               jitter.width=0.2 # 控制左右抖动幅度,避免点过度分散
             )) +
  scale_shape_manual(values=c(16, 16)) +
  scale_color_manual(values=c("black", "red"))

print(p)

关键修改说明

  • group=age:将点的分组依据设置为年龄,这样抖动偏移会针对Young和Old两个组分别处理,实现左右分布
  • dodge.width=0.7:与箱线的width参数保持一致,确保点的偏移范围和箱线宽度匹配,避免点超出箱线区域
  • jitter.width=0.2:控制点在左右方向的抖动幅度,让点围绕箱线中线的左右两侧分散,既满足分组要求又保证可读性

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.26 07:53:18