如何用R ggplot绘制total与outcome堆叠柱状图(stat=identity)
解决方案
首先确保你的模拟数据格式正确,先创建数据框:
data <- data.frame( no = 1:5, total = c(800, 700, 650, 600, 500), outcome = c(40, 30, 27, 25, 20) )
你的原始代码存在重复调用geom_bar却未映射outcome数据、使用宽格式数据不支持多变量并列绘制、scale_y_continuous刻度参数设置错误的问题。以下是修正后的完整代码:
# 加载必要工具包 library(tidyverse) # 将宽格式数据转换为ggplot适配的长格式 data_long <- data %>% pivot_longer(cols = c(total, outcome), names_to = "variable", values_to = "value") # 绘制目标并列柱状图 ggplot(data_long, aes(x = factor(no), y = value, fill = variable)) + geom_bar(stat = "identity", position = position_dodge(width = 0.8), # 实现柱子并列展示 width = 0.7) + scale_fill_manual(values = c("total" = "black", "outcome" = "gray")) + # 指定对应颜色 labs(x = "No", y = "Value") + scale_y_continuous(breaks = seq(0, 900, 100)) + # 修正y轴刻度范围 theme_minimal()
关键调整说明:
- 用
pivot_longer转换数据格式,让total和outcome作为分组变量,适配ggplot的绘图逻辑 position_dodge参数实现同一x轴位置下两个柱子的并列效果scale_fill_manual精准指定黑色对应total、灰色对应outcome- 修正
scale_y_continuous的刻度序列,从0开始覆盖数据范围,更直观呈现数值差异
内容的提问来源于stack exchange,提问作者이예림
相关产品推荐
相关产品推荐

