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

在R中使用ggpubr给分组直方图添加理论正态曲线

解决方案

要在分组直方图上添加指定参数的理论正态曲线,你可以基于ggplot2的图层扩展ggpubr的绘图结果,具体步骤如下:

  1. 先生成每组的理论正态分布密度数据,确保覆盖直方图的x轴范围;
  2. 在你的gghistogram代码后添加geom_line图层,将理论数据映射到图上。

完整代码如下:

# 构造数据集
group <- rbinom(1000, 1, 0.5)
con <- rnorm(1000, ifelse(group == 1, 0, 4), 3)
results_example <- data.frame(con, group)
results_example$group <- as.factor(results_example$group)

# 生成理论正态分布的密度数据
x_range <- seq(min(results_example$con), max(results_example$con), length.out = 1000)
theory_df <- expand.grid(
  x = x_range,
  group = levels(results_example$group)
)
# 根据分组计算对应理论密度
theory_df$density <- dnorm(
  theory_df$x,
  mean = ifelse(theory_df$group == "1", 0, 4),
  sd = 3
)

# 绘制直方图并添加理论曲线
library(ggpubr)
gghistogram(results_example, x = "con", y = "..density..",
            add = "mean", rug = TRUE,
            fill = "group", palette = c("red", "blue")) +
  geom_line(data = theory_df, aes(x = x, y = density, color = group), size = 1) +
  scale_color_manual(values = c("red", "blue"))  # 保持曲线颜色与填充色一致

代码说明

  • expand.grid生成包含所有分组和x轴序列的组合数据,确保每个组都有完整的理论密度曲线数据;
  • dnorm根据你指定的参数(group=1对应N(0,3),group=0对应N(4,3))计算理论密度;
  • geom_line将理论数据以曲线形式添加到直方图上,通过color=group保证曲线颜色与对应分组的直方图填充色匹配;
  • scale_color_manual手动设置曲线颜色,和直方图的palette保持一致,提升视觉一致性。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.22 13:46:02