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
相关产品推荐
相关产品推荐

