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

如何在分面ggplot中为最高柱顶标注对应x值(进球数)?

在分面ggplot中为每组最高柱子标注对应进球数

要实现每个分面组最高柱子顶部标注对应的进球数,只需两步:先筛选出每组概率最高的记录,再用geom_text把进球数标在柱子上方。

完整代码

library(tidyverse)

# 原始数据
df <- tibble ( team = rep(c('A', 'B'), each = 5),
               goals = rep(1:5,2),
               prob = c(.10, .15, .25, .20, .15, .20, .30, .20, .10, .05))

# 筛选每个组概率最高的记录,用于标注
label_df <- df %>% 
  group_by(team) %>% 
  slice_max(prob, n = 1, with_ties = FALSE) # 若有多个相同最大值,只取第一个

# 绘图并添加标注
df %>% 
  ggplot(aes(x = goals, y = prob)) +
  geom_col() +
  # 添加标注文本
  geom_text(data = label_df, aes(label = goals),
            vjust = -0.5,  # 文本向上偏移,避免和柱子顶部重叠
            size = 4) +     # 调整文本大小
  facet_wrap(~team) +
  ylim(0, 0.35) # 扩展y轴上限,防止标注文本被截断

关键说明

  • slice_max(prob, n=1):按球队分组后,提取每组中概率最大的一行数据,确保每个分面只对应一个标注
  • geom_text的data参数单独指定标注数据框,这样每个分面只会显示当前组的最高进球数
  • vjust=-0.5控制文本垂直位置,让标注出现在柱子顶部上方
  • ylim调整y轴范围,避免标注文本超出绘图区域

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.23 13:10:29