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

在R语言中使用ggplot为箱线图添加汇总统计标签的问题求助

问题根因

stat_summary 中 fun.data 接收的 y 参数是当前分组下var2列的数值向量,而非当前分组对应行的索引。你直接用df$var3[y]相当于把var2的值当作行号取var3的值,计算逻辑完全错位,自然得到和预期不符的结果。

修复方案

建议提前计算好每个分组的统计值,再通过geom_text叠加,逻辑清晰不易出错:

library(tidyverse)
var1<- c("A", "B", "A", "B", "B", "B", "A", "B", "B")
var2<- as.numeric(c(4:12))
var3<- as.numeric(c(1:9))

df<- data.frame(var1, var2, var3)

# 提前计算分组统计量
df_stat <- df %>% 
  group_by(var1) %>% 
  summarise(
    count = n(),
    sum_var3 = sum(var3),
    # 标签位置放在箱线图上方,基于该组var2最大值加偏移
    y_pos = max(var2) * 1.05
  )

ggplot(df, aes(var1, var2)) + 
  geom_boxplot() +
  # 用预计算的统计数据叠加文本标签
  geom_text(data = df_stat,
            aes(x = var1, y = y_pos,
                label = paste0('number of var1 = ', count, '\n',
                               'total number of var3 = ', sum_var3)),
            vjust = 0.9)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.24 02:24:05