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

如何在R语言中用ggplot实现对照组与各条件组的密度图分面对比

解决方案

可以通过构造包含对照组与单个条件组的组合数据集,再结合facet_wrap实现你要的网格状对比图效果,具体步骤如下:

步骤1:生成对比数据集

先提取所有非对照组的名称,再为每个条件组拼接对照组数据,同时标记当前对比的目标组:

library(tidyverse)

# 获取所有非对照组的条件名称
non_control_groups <- test %>%
  filter(Condition != "Control") %>%
  pull(Condition) %>%
  unique()

# 生成每个条件组+对照组的组合数据
comparison_data <- map_dfr(non_control_groups, function(target_group) {
  test %>%
    filter(Condition %in% c("Control", target_group)) %>%
    mutate(Compare_Target = target_group) # 标记当前对比的条件组
})

步骤2:绘制网格状对比密度图

用facet_wrap按标记的对比目标组分面,每个分面自动展示对照组与对应条件组的重叠密度图:

comparison_data %>%
  ggplot(aes(x = Size, fill = Condition)) +
  geom_density(alpha = 0.2) + # 透明重叠效果
  facet_wrap(vars(Compare_Target)) + # 按对比目标组生成网格
  # 可选:调整样式
  theme_bw() +
  labs(x = "长度值", y = "密度", fill = "分组")

额外调整

如果需要控制网格的行数/列数,可在facet_wrap中添加nrow或ncol参数,比如:

facet_wrap(vars(Compare_Target), nrow = 2)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.29 12:03:22