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

如何用ggplot2绘制自定义区间宽度与比例高度的直方图?

解决方案

要实现自定义分箱的直方图,首先需要把分箱区间和对应比例整理成包含左边界(xmin)、右边界(xmax)、**数据比例(prop)**的数据集,再用ggplot2绘制不等宽的矩形/柱状图即可。

方法1:精准匹配分箱区间的geom_rect法

这是最贴合直方图定义的实现方式,直接基于分箱的左右边界绘制矩形:

# 先构造包含分箱区间的数据集
bin_df <- data.frame(
  xmin = bin_limits[-length(bin_limits)],  # 每个分箱的左边界
  xmax = bin_limits[-1],                   # 每个分箱的右边界
  prop = props                             # 对应分箱的数据比例
)

# 加载ggplot2并绘图
library(ggplot2)
ggplot(bin_df) +
  geom_rect(aes(xmin = xmin, xmax = xmax, ymin = 0, ymax = prop),
            fill = "#2E9FDF", color = "white") +
  scale_y_continuous(limits = c(0, 0.1)) +
  labs(x = "分箱区间", y = "数据比例") +
  theme_minimal()

方法2:简化的geom_col法

如果偏好传统柱状图的视觉效果,可以通过设置柱子位置和宽度来适配分箱:

# 基于之前的bin_df,计算每个分箱的宽度
bin_df$width <- bin_df$xmax - bin_df$xmin

# 绘制柱状图
ggplot(bin_df, aes(x = (xmin + xmax)/2, y = prop, width = width)) +
  geom_col(fill = "#2E9FDF", color = "white") +
  scale_y_continuous(limits = c(0, 0.1)) +
  labs(x = "分箱区间", y = "数据比例") +
  theme_minimal()

注意点

  • 两种方法都能实现需求,geom_rect更精准对应分箱的区间范围,geom_col视觉上更接近常规柱状图。
  • 可以根据需求调整填充色、边框色、主题等样式参数。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.01 18:53:28