ggplot如何仅绘制多个直方图的轮廓以清晰区分重叠分布
R语言ggplot2实现重叠直方图仅保留加粗外轮廓方案
核心实现逻辑:规避原有geom_histogram生成的填充色、柱体竖线,直接绘制直方图的阶梯状上轮廓即可,我们可以用stat_bin直接计算分箱计数后调用阶梯线几何对象实现需求。
完整修改后代码
library(tidyverse) A <- rnorm(n = 1000, mean = 0, sd = 1) B <- rnorm(n = 1000, mean = 0.1, sd = 1.3) tbl <- tibble(A, B) %>% pivot_longer(cols = everything(), names_to = "Distributions", values_to = "values") ggplot(data = tbl, aes(x = values, color = Distributions)) + # stat_bin计算分箱计数,用step几何对象绘制阶梯轮廓 stat_bin(geom = "step", bins = 50, linewidth = 1.2, position = "identity") + theme_bw()
参数说明
- 移除了原代码中的
fill映射,自然不存在填充色 linewidth参数可自行调整,数值越大轮廓线越粗bins参数和原代码保持一致,分箱规则完全匹配原直方图的分布呈现效果- 生成的图形仅保留不同分布直方图的上轮廓,无任何柱体竖线干扰,非常适合重叠分布的对比
内容的提问来源于stack exchange,提问作者SiH
相关产品推荐
相关产品推荐

