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

如何使用ggplot2绘制嵌套直方图,替代当前生成的累积直方图

ggplot2同分组变量嵌套条形图实现方案

问题原因

你当前的代码未显式指定条形排列规则,geom_col/geom_bar默认使用position = "stack"堆叠模式,所以同组两个变量的数值会累加显示,形成你看到的累积效果。

调整后完整代码

# 加载依赖包
library(tidyverse)

# 自定义颜色映射
color_list <- c("VAR1"="blue","VAR2"="red")

# 绘图代码
tab %>%
  # 调整绘制顺序,保证小值变量叠在顶层不被遮挡
  arrange(desc(variable)) %>%
  mutate(Groups = fct_reorder(Groups, value)) %>%
  ggplot(aes(
    x = value, 
    y = Groups,
    fill = factor(variable, levels = c("VAR1","VAR2"))
  ))  +
  # 核心调整:关闭堆叠,按变量设置不同宽度实现嵌套效果
  geom_col(
    position = "identity",
    aes(width = ifelse(variable == "VAR1", 0.6, 0.3)),
    alpha = 0.8
  ) +
  scale_fill_manual(
    values = color_list,
    name = "变量类型",
    guide = guide_legend(order = 1)
  ) +
  theme_minimal()

关键参数说明

  • position = "identity":取消默认堆叠逻辑,两个条形均从X轴零点开始绘制,长度对应自身实际value值
  • 按变量设置宽度:数值更大的VAR1使用0.6宽度作为底层,数值更小的VAR2使用0.3宽度叠在上层,自然形成嵌套视觉效果
  • alpha = 0.8:添加轻微透明度,强化嵌套的层次感,也可根据需求取消该参数使用完全不透明样式

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.01 14:48:05