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

求助:使用R语言ggplot绘制百分比堆叠柱状图

R语言绘制单柱百分比堆叠柱状图解决方案

原代码问题分析

  1. 百分比列pecent被处理为带%的字符型,ggplot无法将其作为数值进行堆叠计算
  2. fill=pecent映射错误,应映射到分类变量(如fuel_type)
  3. x轴使用fuel_type会生成多柱图,不符合“单个柱状图”需求
  4. 存在拼写错误:postion应为position

修正后的完整实现

1. 数据预处理(计算数值型百分比)

假设group1是包含fuel_type(类别)和count(数量)的汇总数据框,先计算每个类别的百分比(保留数值格式):

group1$percent <- 100 * group1$count / sum(group1$count)

2. 绘制百分比堆叠柱状图

library(ggplot2)
library(scales) # 用于格式化百分比轴标签

ggplot(group1, aes(x = "总占比", y = percent, fill = fuel_type)) +
  geom_col(position = position_stack()) + # geom_col 等价于 geom_bar(stat="identity")
  # 添加居中的百分比标签
  geom_text(aes(label = paste0(round(percent), "%")), 
            position = position_stack(vjust = 0.5), 
            show.legend = FALSE) +
  # 将y轴格式化为百分比样式
  scale_y_continuous(labels = percent_format(scale = 1)) +
  # 设置轴标签和图例名称
  labs(x = "", y = "百分比", fill = "燃料类型") +
  theme_minimal()

关键说明

  • x轴设为固定字符串(如"总占比"),确保生成单个柱状图
  • fill=fuel_type让不同类别以不同颜色堆叠
  • position_stack()实现堆叠效果,配合vjust=0.5让标签居中显示在堆叠块内
  • scale_y_continuous将y轴数值转换为百分比显示,更直观

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.06 01:25:21