在R中使用ggpubr给分组直方图添加理论正态曲线
解决方案
要在分组直方图上添加指定参数的理论正态曲线,你可以基于ggplot2的图层扩展ggpubr的绘图结果,具体步骤如下:
- 先生成每组的理论正态分布密度数据,确保覆盖直方图的x轴范围;
- 在你的
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
相关产品推荐
相关产品推荐

