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

如何使用ggplot2绘制两组带分组属性的独立箱线图

问题解决方法

核心原因是你当前使用宽格式数据绘图时,两个箱线图的x轴映射共用了同一个坐标轴维度,导致图层重叠。我们只需要先把宽表转换为ggplot更适配的长表格式,再进行绘图即可实现分离效果。

完整实现代码

library(tidyverse)

# 1. 宽表转长表,将male、female整理为分类变量
data_long <- data %>%
  pivot_longer(cols = c(male, female), 
               names_to = "gender", 
               values_to = "count")

# 2. 绘图,x轴映射为gender自动分成两个分组区间,fill映射number实现组内分箱
data_long %>%
  ggplot(aes(x = gender, y = count, fill = number)) +
  geom_boxplot(position = position_dodge(preserve = "single"))

参数说明

  • pivot_longer 会把原数据中male和female两列转为名为gender的分类列,对应数值存入count列,如果你原数据中女性列的实际名称是P_3_2,替换cols参数里的female即可
  • position_dodge(preserve = "single") 保证不同number分组的箱线宽度统一,不会出现某类别下分组少导致箱线变宽的问题
  • 如果你需要调整x轴的显示文字,可以加scale_x_discrete(labels = c("male" = "男性", "female" = "女性"))自定义修改

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.05 20:24:03