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

为何我的R语言ggplot geom_col无法堆叠柱状图?

问题原因及解决方法

你的代码没法实现堆叠柱状图,核心问题出在数据结构上:

你当前的数据里,x列是三个独立的类别(a、b、c),每个类别仅对应一个y值。而geom_col的position='stack'作用是将同一x轴位置下的多个柱子堆叠在一起——你现在每个x位置只有一个柱子,自然没东西可堆叠,所以图表默认显示成了分组(每个x对应一个柱子)的布局。

修正方案

要实现堆叠效果,需要调整数据结构,让同一个x轴类别下包含多个需要堆叠的子项。比如添加一个分组列(比如group),把a、b、c作为同一x下的不同堆叠部分:

data.frame(
  x = rep('总类别', 3),  # 统一的x轴标签
  group = c('a', 'b', 'c'),  # 区分堆叠的子分组
  y = c(.549, .051, .4)
) %>%
  ggplot(aes(x = x, y = y, fill = group)) +  # 用fill映射堆叠部分
  geom_col(position = 'stack')

这样就能得到垂直堆叠的柱状图:同一x轴位置下,a、b、c三个部分的柱子会叠在一起。

如果你的需求是把a、b、c作为x轴的不同类别,但每个类别下有多个堆叠项,那需要补充对应的数据(比如每个x下至少2个y值),再用fill映射子分组即可。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.02 09:04:52