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

ggplot2如何在分组百分比堆叠直方图下方添加总频次直方图

实现方案

你可以借助patchwork包拼接两张ggplot2图形,代码简单易维护,同时可以保证两张图的x轴对齐,符合你的需求。

完整可运行代码

# 未安装依赖包先运行:install.packages(c("ggplot2", "patchwork"))
library(ggplot2)
library(patchwork)

# 1. 绘制上方的分组占比直方图
p1 <- ggplot(iris,
       aes(x = Sepal.Length, group = factor(Species), fill = factor(Species))) + 
  geom_histogram(position = "fill", bins = 30) + # bins可按需调整区间数量
  labs(y = "组内占比", fill = "物种") +
  theme_bw() +
  # 可选择去掉上方图的x轴刻度和标题,和下方图共用更整洁
  theme(axis.title.x = element_blank(),
        axis.text.x = element_blank(),
        axis.ticks.x = element_blank())

# 2. 绘制下方的总频次直方图
p2 <- ggplot(iris,aes(x = Sepal.Length)) + 
  geom_histogram(fill = "gray50", bins = 30) + # 保持bins和上图一致,区间对应更准确
  labs(y = "总频次", x = "Sepal.Length") +
  theme_bw()

# 3. 上下拼接两张图,设置高度比例
p1 / p2 + plot_layout(heights = c(3, 1))

说明

  • 两个图的bins参数建议保持一致,保证x轴的区间划分完全对应,查看分布关联性更准确
  • plot_layout里的heights参数可以按需调整上下图的高度比例,比如改成c(2,1)可以让下方的图更大
  • 如果不需要共用x轴标题,删掉p1的theme里的三行设置即可保留上方图的x轴信息

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.24 10:06:04