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

RStudio中相关数据的分组箱线图绘制问题求助

解决方案:分组箱线图绘制步骤

问题根源

你的数据集是宽格式(每个指标s1-s8各占一列),而ggplot2绘制分组箱线图需要长格式数据(所有数值放在同一列,用另一列标识变量类别)。同时原代码存在两个关键错误:

  • aes()中不能同时传入多个y变量(y=s1,s2,...),ggplot2无法识别这种写法
  • 错误使用facet_wrap(. ~ horario),导致每个面板只显示单个时间点的数据,无法实现分组效果

具体步骤

1. 安装并加载必要的包

需要用tidyr转换数据格式,ggplot2绘图:

install.packages(c("tidyr", "ggplot2"))
library(tidyr)
library(ggplot2)

2. 将宽格式数据转换为长格式

用pivot_longer()把s1-s8列合并为一列数值,同时生成标识变量名的列:

phe_long <- pivot_longer(phe, 
                         cols = starts_with("s"),  # 选择所有以s开头的列
                         names_to = "样本",       # 新列名:变量类别(s1-s8)
                         values_to = "数值")       # 新列名:对应数值

转换后的数据结构示例:

horario样本数值
6:30s17.48
6:30s27.61
.........

3. 绘制分组箱线图

根据你的预期图,设置x轴为时间点horario,每个时间点下按样本(s1-s8)分组绘制箱线,用填充色区分不同样本:

ggplot(phe_long, aes(x = horario, y = 数值, fill = 样本)) +
  geom_boxplot(position = position_dodge(width = 0.8)) +  # 分组箱线错开显示
  labs(title = "分组箱线图", x = "时间点", y = "数值", fill = "样本") +
  theme_minimal()

如果需要x轴为样本、按时间点分组,只需调整aes()参数:

ggplot(phe_long, aes(x = 样本, y = 数值, fill = horario)) +
  geom_boxplot(position = position_dodge(width = 0.8)) +
  labs(title = "分组箱线图", x = "样本", y = "数值", fill = "时间点") +
  theme_minimal()

效果说明

转换为长格式后,ggplot2可以正确识别分组变量,生成符合你需求的多组箱线图,清晰展示不同分组下的数据分布。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.26 17:50:25