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

如何用ggplot制作非分面的垂直多直方图?

解决方案

你可以使用ggridges包的geom_histogram_ridges()函数来实现这种合并式的直方图展示,既不需要分面,也不会产生小提琴图的概率密度效果,同时能适配不同样本量的分组。

步骤1:安装并加载所需包

install.packages("ggridges") # 首次使用需安装
library(ggplot2)
library(ggridges)

步骤2:绘图代码

ggplot(data = data, aes(x = x, y = Factor)) +
  geom_histogram_ridges(
    scale = 0.9,        # 控制各组直方图的高度比例,避免重叠
    rel_min_height = 0.01, # 过滤掉极小的直方图尾巴
    fill = "lightblue", # 可自定义填充色
    color = "black"     # 自定义边框色
  ) +
  theme_ridges() # 使用ggridges配套主题,优化视觉效果

代码说明

  • 将Factor映射到y轴,每个因子对应一个水平方向的直方图,实现类似分面但合并为单图的效果
  • scale参数调整各组直方图的垂直间距,避免互相遮挡
  • rel_min_height可以去掉样本量小的组中几乎看不见的频数尾巴,让图形更整洁
  • 如果需要保留原始直方图的频数刻度,可以添加scale_y_discrete(expand = c(0.05, 0))来调整y轴间距

另外,如果你不想额外安装包,也可以通过手动调整数据的位置来实现,但步骤繁琐且效果不如ggridges简洁。

内容的提问来源于stack exchange,提问作者Sergio Rojas-Diaz

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.08 22:47:16