使用ggplot基于两组不同向量绘制倾向性得分重叠直方图
不等长分组线性化PS得分ggplot绘图数据整理及绘图方案
核心数据整理逻辑
ggplot绘图要求输入长表结构数据,针对两组长度不同的线性化倾向性得分(PS),只需分别为两组数据添加分组标识后按行合并即可,无需强制两组样本量一致。
具体实现步骤
假设你已完成PS模型计算,得到两个独立的线性化PS得分向量:男性组ps_male、女性组ps_female,两组长度不同。
- 构建适配ggplot的长表数据集
library(tidyverse) # 合并两个不等长向量为长表数据框 ps_plot_data <- bind_rows( # 男性组数据,标注分组为"男性" data.frame(linear_ps = ps_male, gender = "男性"), # 女性组数据,标注分组为"女性" data.frame(linear_ps = ps_female, gender = "女性") )
- 绘制符合期刊要求的重叠直方图
ggplot(ps_plot_data, aes(x = linear_ps, fill = gender)) + # 设置半透明避免遮挡,position设为identity实现重叠展示 geom_histogram(alpha = 0.6, position = "identity", bins = 15, color = "black", linewidth = 0.2) + # 期刊通用极简主题 theme_bw(base_family = "serif", base_size = 12) + labs( x = "线性化倾向性得分", y = "样本频数", fill = "性别分组" ) + # 可选:添加分组密度曲线辅助展示重叠程度 geom_density(aes(y = after_stat(count * (max(linear_ps) - min(linear_ps))/15), alpha = 0.3)
参数调整说明
- 可通过修改
bins参数调整直方图分箱数量,适配你的数据分布特征 - 可通过
theme()函数调整字体、坐标轴刻度、图例位置等样式,匹配目标期刊的格式要求 - 若不需要密度曲线可直接删除对应代码行
内容的提问来源于stack exchange,提问作者Pashtun
相关产品推荐
相关产品推荐

