R语言基于多列分组宽表绘制合并箱线图的实现方法
实现方法
核心逻辑
当前weightloss数据集为宽结构,t1、t2、t3分别为独立列,无法直接映射到ggplot的单一坐标轴,需先转换为长结构数据。
完整代码
首先加载所需依赖包:
library(tidyverse) library(rstatix) # 你用到的get_summary_stats来自该包
第一步:将宽格式数据转换为长格式
# 转换长数据,同时将测试阶段设为有序因子保证x轴顺序正确 weight_long <- weightloss %>% pivot_longer( cols = c(t1, t2, t3), # 指定要合并的得分列 names_to = "trial_type", # 新生成的测试阶段列名,即你需要的x轴因子 values_to = "score" # 新生成的得分列名,即你需要的y轴取值 ) %>% mutate(trial_type = factor(trial_type, levels = c("t1", "t2", "t3")))
第二步:绘制箱线图
ggplot(weight_long, aes(x = trial_type, y = score)) + geom_boxplot(width = 0.6, fill = "#86BBD8", alpha = 0.7) + # 自定义箱线图样式 labs( x = "测试阶段", y = "测量得分", title = "三个测试阶段得分分布箱线图" ) + theme_classic()
拓展功能
如果需要同时区分饮食、运动分组的差异,可直接在映射中添加fill参数即可分组展示:
ggplot(weight_long, aes(x = trial_type, y = score, fill = diet)) + geom_boxplot(width = 0.6, alpha = 0.7, position = position_dodge(0.8)) + labs( x = "测试阶段", y = "测量得分", fill = "是否控制饮食", title = "不同饮食分组各测试阶段得分分布" ) + theme_classic()
内容的提问来源于stack exchange,提问作者Shawn Hemelstrand
相关产品推荐
相关产品推荐

