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

ggplot2堆叠条形图未正确显示数值问题求助

问题原因与解决方案

你的核心问题出在position = "fill"这个参数上:

  • 这个参数会强制把堆叠条形的总高度归一化到1(也就是100%),不管你输入的rel是百分比还是绝对值,都会被按比例缩放,最终y轴范围固定在0到1,自然达不到你想要的48高度。
  • geom_col()默认的position = "stack"才是直接堆叠原始数值,总高度等于所有rel值的总和,这才是你需要的效果。

修改后的代码

去掉position = "fill"即可:

ggplot(filter1, aes(x = as.factor("M1"), y = rel, fill = Genus)) +
  geom_col()

如果要保留标签,修改后的代码是:

ggplot(filter1, aes(x = as.factor("M1"), y = rel, fill = Genus)) +
  geom_col() +
  geom_label(aes(label = Genus))

补充说明

两种position参数的区别:

  • position = "stack":默认行为,直接堆叠原始y值,条形总高度等于所有y值的总和
  • position = "fill":将每个堆叠元素的高度转换为占总高度的比例,总高度固定为1,适合展示各部分的占比关系,而非实际数值总和

内容的提问来源于stack exchange,提问作者max.p

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.01 05:06:05