如何使用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
相关产品推荐
相关产品推荐

