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

如何使用ggplot2基于已分组数据绘制堆叠柱状图?

用ggplot绘制堆叠柱状图的实操步骤

首先确保你已经安装并加载ggplot2包:

install.packages("ggplot2") # 未安装时执行
library(ggplot2)

1. 确认数据集格式

堆叠柱状图要求数据为长格式(每一行对应一个分组的数值记录)。如果你的数据是宽格式(每个分组单独成列),先通过tidyr包转换:

# 示例宽格式数据
wide_data <- data.frame(
  类别 = c("类别A", "类别B"),
  分组1 = c(10, 8),
  分组2 = c(15, 12)
)

# 转换为长格式
library(tidyr)
long_data <- pivot_longer(wide_data, cols = -类别, names_to = "分组", values_to = "数值")

2. 绘制基础堆叠柱状图

用geom_col()(已有数值用这个,计数统计用geom_bar()),通过fill参数指定分组列实现堆叠:

ggplot(long_data, aes(x = 类别, y = 数值, fill = 分组)) +
  geom_col()

3. 自定义优化(可选)

  • 添加堆叠数值标签:
ggplot(long_data, aes(x = 类别, y = 数值, fill = 分组)) +
  geom_col() +
  geom_text(aes(label = 数值), position = position_stack(vjust = 0.5))
  • 调整配色:
ggplot(long_data, aes(x = 类别, y = 数值, fill = 分组)) +
  geom_col() +
  scale_fill_brewer(palette = "Set2") # 使用预设调色板
  • 替换主题与添加标签:
ggplot(long_data, aes(x = 类别, y = 数值, fill = 分组)) +
  geom_col() +
  labs(title = "分组堆叠柱状图", x = "类别", y = "数值", fill = "分组") +
  theme_minimal()
  • 绘制百分比堆叠图:
ggplot(long_data, aes(x = 类别, y = 数值, fill = 分组)) +
  geom_col(position = position_fill()) +
  labs(y = "百分比")

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.21 09:06:30