ggplot2绘制双变量重叠直方图时样本计数显示异常问题求助
问题原因
该计数异常是因为geom_histogram默认使用堆叠位置调整(position="stack"),两个分组的柱子会上下堆叠,上层分组的高度实际是两个组对应区间的计数总和,所以会出现高度翻倍、两组高度不均的情况。
解决方案
方案1:设置位置调整为identity,保留原始计数
直接修改geom_histogram的position参数,让两组直方图都从y轴0基线开始绘制,配合设置的alpha透明度就能正常展示重叠效果:
df |> pivot_longer(cols = c(peso,peso2), names_to = "caso", values_to = "peso") |> ggplot(aes(x = peso, colour= caso, fill = caso))+ geom_histogram(alpha = 0.4, position = "identity")
方案2:改用密度统计,适配样本量差异场景
如果后续两组样本量不一致,想要对比分布形态而非绝对计数,可以将y轴映射为密度:
df |> pivot_longer(cols = c(peso,peso2), names_to = "caso", values_to = "peso") |> ggplot(aes(x = peso, colour= caso, fill = caso, y = after_stat(density)))+ geom_histogram(alpha = 0.4, position = "identity")
额外优化建议
可以给geom_histogram添加bins(指定柱子总数)或binwidth(指定单根柱子宽度)参数,避免默认分桶规则带来的显示偏差。
内容的提问来源于stack exchange,提问作者Juan Riera
相关产品推荐
相关产品推荐

