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

如何通过R语言ggplot绘制带量化数值的堆叠geom_col柱状图

实现方案

问题核心原因

你当前的代码直接对多列指标求和后映射给y和fill,无法拆分每个指标的独立堆叠块,也没法针对单个分类加标签,核心是没有将宽格式的统计数据转换为ggplot堆叠图要求的长格式。

操作步骤

  • 第一步:将宽表转换为长表,把PTS、MP等统计指标转为分类列,对应数值转为值列
  • 第二步:调整ggplot映射规则,将统计分类映射给fill,数值映射给y
  • 第三步:用geom_text搭配堆叠位置参数给每个块添加标签

完整可运行代码

# 加载所需包
library(tidyverse)

# 1. 数据预处理:宽表转长表
long_stats <- basicStats %>%
  select(Age, PTS, MP, TRB, AST, STL, BLK, TOV) %>% # 保留需要用到的列
  pivot_longer(
    cols = -Age, # 除Age外的所有指标列都转为长格式
    names_to = "stat_type", # 存储指标名称的列命名为stat_type
    values_to = "stat_value" # 存储指标数值的列命名为stat_value
  )

# 2. 绘制带标签的堆叠柱形图
basic <- ggplot(data = long_stats, aes(x = Age, y = stat_value, fill = stat_type)) +
  geom_col(position = "stack") + # position=stack为堆叠默认配置,明确标注可读性更强
  # 给每个堆叠块添加居中标签,vjust=0.5控制标签在块内垂直居中
  geom_text(aes(label = stat_value), position = position_stack(vjust = 0.5), size = 3) +
  coord_flip()

# 输出绘图结果
print(basic)

自定义调整说明

  • 如果想要标签显示指标名称而非数值,把geom_text里的label = stat_value改成label = stat_type即可
  • 如果需要调整标签的字体、颜色,可以直接在geom_text参数中添加color、family等配置项
  • 可以通过scale_fill_manual自定义每个统计指标对应的填充色

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.03 08:24:06