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

R语言如何绘制分组箱线图将9组数据划分为3个类别展示

方案1:基础R boxplot() 函数实现

首先对原始数据做结构化整合,指定分组映射关系即可实现分组展示:

# 1. 给三个原始数据框添加所属大组标识,假设三个数据框分别对应S/M/E三个大组
df_S$major_group <- "S组"
df_M$major_group <- "M组"
df_E$major_group <- "E组"

# 2. 提取需要的列合并为总数据框
all_df <- rbind(
  df_S[, c("dN", "dS", "Omega", "major_group")],
  df_M[, c("dN", "dS", "Omega", "major_group")],
  df_E[, c("dN", "dS", "Omega", "major_group")]
)

# 3. 转换为长格式,把dN/dS/Omega三个指标转为行存储
long_df <- reshape(
  all_df, 
  direction = "long", 
  varying = list(c("dN", "dS", "Omega")),
  v.names = "value",
  timevar = "indicator",
  times = c("dN", "dS", "Omega")
)

# 4. 绘图,通过formula指定分组规则
# 同一大组用同色系区分,可按需调整颜色
col_vec <- c(
  "#f8766d", "#f8766d80", "#f8766d40",
  "#00ba38", "#00ba3880", "#00ba3840",
  "#619cff", "#619cff80", "#619cff40"
)
boxplot(
  value ~ major_group + indicator, 
  data = long_df,
  main = "分组箱线图",
  xlab = "分组",
  ylab = "数值分布",
  col = col_vec,
  las = 2 # x轴标签旋转避免重叠
)
# 可选:添加组间虚线分隔三个大组
abline(v = c(3.5, 6.5), lty = 2, col = "gray")

最终输出的9个箱线会按S组3个、M组3个、E组3个自动分组展示。


方案2:ggplot2 包实现

用ggplot2更推荐长数据格式 + 美学映射的方式实现,代码逻辑更清晰:

library(ggplot2)
library(dplyr)
library(tidyr)

# 1. 合并三个数据框并转长格式
long_df <- bind_rows(
  df_S %>% mutate(major_group = "S组"),
  df_M %>% mutate(major_group = "M组"),
  df_E %>% mutate(major_group = "E组")
) %>% 
  select(dN, dS, Omega, major_group) %>% 
  pivot_longer(
    cols = -major_group, 
    names_to = "indicator", 
    values_to = "value"
  )

# 2. 绘图
ggplot(long_df, aes(x = major_group, y = value, fill = indicator)) +
  geom_boxplot(
    position = position_dodge(0.8), # 组内箱线间距
    alpha = 0.7,
    notch = TRUE,
    notchwidth = 0.6
  ) +
  labs(
    title = "分组箱线图",
    x = "大组别",
    y = "数值分布",
    fill = "指标类型"
  ) +
  theme_bw()

如果需要调整分组逻辑,比如x轴展示三个指标、每个指标下分S/M/E三个大组,只需修改映射规则为aes(x = indicator, fill = major_group)即可。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.02 23:39:03