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

如何绘制两组柱形互不遮挡的重叠直方图(附示例数据)

R语言绘制无遮挡分组重叠直方图方案

待使用的分组统计数据

分组y0y1
M100200
F50250

常规双直方图同绘方法会出现两类柱形叠压遮挡的问题,要实现柱形互不遮挡的效果,核心是让同区间下的两个分组柱形错位排布,不需要调整透明度,基于ggplot2的实现代码如下:

  • 加载依赖、转换数据格式
library(ggplot2)
library(tidyr)

# 录入统计数据
raw_df <- data.frame(
  group = c("M", "F"),
  y0 = c(100, 50),
  y1 = c(200, 250)
)
# 转换为绘图适配的长格式
plot_df <- pivot_longer(raw_df, c(y0, y1), names_to = "y_cat", values_to = "cnt")
  • 绘图,通过位置偏移参数实现柱形错位
bar_width <- 0.35
ggplot(plot_df, aes(x = y_cat, y = cnt, fill = group)) +
  geom_col(width = bar_width, position = position_dodge(width = bar_width)) +
  # 以下样式可根据需求自行修改
  scale_fill_brewer(palette = "Set2") +
  labs(x = "Y类别", y = "计数", fill = "分组") +
  theme_minimal()

如果是基于原始未聚合的个体数据绘制直方图,仅需将geom_col替换为geom_histogram,保持position_dodge()的位置参数设置即可,同一统计区间内的M、F两组柱形会自动左右错开,完全不会出现遮挡问题。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.03 04:03:40