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

使用ggplot绘制数据集所有自变量与因变量class的分面箱线图

解决方案

你之前的代码问题出在stack操作没有保留class分类变量,无法按患癌状态分组绘制箱线图,也缺少分面配置。使用长表转换+分面即可实现需求,代码如下:

第一步:加载所需包

library(ggplot2)
library(tidyr)

第二步:将宽表转为长表(保留class字段)

# 把除class外的30个数值列转为长格式
web_db_long <- pivot_longer(web_db, 
                            cols = -class, 
                            names_to = "variable", 
                            values_to = "value")

第三步:绘制分面箱线图

ggplot(web_db_long, aes(x = class, y = value)) +
  geom_boxplot() +
  # 5行6列布局,y轴自由适配各变量尺度
  facet_wrap(~variable, nrow = 5, ncol = 6, scales = "free_y") +
  # 可自定义坐标轴标题
  labs(x = "患癌状态", y = "变量数值") +
  # 可选:优化主题显示
  theme_bw()

参数说明

  • facet_wrap的nrow=5, ncol=6刚好适配30个自变量的分面需求,你也可以改为nrow=6, ncol=5调整布局
  • scales="free_y"是实现每个子图y轴独立适配变量尺度的关键参数,去掉后所有子图会共用同一y轴范围

无额外包依赖的备选方案

如果不想安装tidyr包,也可以用基础R的reshape函数完成长表转换,后续绘图代码和上面完全一致:

web_db_long <- reshape(web_db, 
                       varying = list(1:30), 
                       v.names = "value", 
                       timevar = "variable", 
                       times = names(web_db)[1:30], 
                       direction = "long")

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.05 12:27:03