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

如何在R中绘制两组数据的并列直方图并解决显示问题

解决R中两组数据的并列直方图问题(含样本量差异适配)

针对样本量差异大导致的图表截断、以及堆叠直方图不符合需求的问题,分别提供base R和ggplot2的解决方案:


Base R 实现并列相对频数直方图

核心思路:统一两组的分组区间,计算相对频数替代原始计数,用barplot实现并列展示

# 提取两组数据的corr值
corr_group1 <- corr_7269$corr
corr_group2 <- corr_n$corr

# 确定共同的分组区间(可根据数据分布调整步长,此处用0.01)
common_breaks <- seq(min(c(corr_group1, corr_group2)), max(c(corr_group1, corr_group2)), by = 0.01)

# 获取两组直方图的统计数据(不直接绘图)
hist_group1 <- hist(corr_group1, breaks = common_breaks, plot = FALSE)
hist_group2 <- hist(corr_group2, breaks = common_breaks, plot = FALSE)

# 计算相对频数(计数/总样本量)
freq_group1 <- hist_group1$counts / length(corr_group1)
freq_group2 <- hist_group2$counts / length(corr_group2)

# 绘制并列直方图
barplot(
  rbind(freq_group1, freq_group2), 
  beside = TRUE,  # 开启并列模式
  col = c("steelblue", "coral"),
  names.arg = round(hist_group1$mids, 2),  # 用区间中点作为X轴标签
  ylab = "相对频数",
  xlab = "rho值",
  main = "两组数据rho值的并列直方图",
  legend.text = c("n+1", "n_1"),
  args.legend = list(x = "topright")
)

ggplot2 实现并列相对频数直方图

核心思路:用position="dodge"关闭堆叠,将Y轴切换为相对频数

方法1:基于密度的相对频数

library(ggplot2)

combinedregioncorr <- rbind(corr_7269, corr_n)

ggplot(combinedregioncorr, aes(x = corr, fill = models)) +
  geom_histogram(
    position = "dodge",  # 并列而非堆叠
    binwidth = 0.01,     # 统一分组宽度
    alpha = 0.7
  ) +
  aes(y = ..density..) +  # 切换为相对频数(密度)
  labs(
    x = "rho values different groups",
    y = "相对频数",
    title = "两组数据rho值的并列直方图"
  ) +
  scale_fill_manual(values = c("steelblue", "coral")) +
  theme_minimal()

方法2:基于每组比例的相对频数

ggplot(combinedregioncorr, aes(x = corr, fill = models, group = models)) +
  geom_histogram(
    position = "dodge",
    binwidth = 0.01,
    alpha = 0.7
  ) +
  stat_count(aes(y = ..prop..)) +  # 计算每组内部的比例
  labs(
    x = "rho values different groups",
    y = "相对频数",
    title = "两组数据rho值的并列直方图"
  ) +
  scale_fill_manual(values = c("steelblue", "coral")) +
  theme_minimal()

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.17 08:17:44