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

如何在ggplot2图形中显示分析所用的样本个体数量?

在ggplot2图形中添加样本量标注的方法

下面分几种常见场景给出可直接复用的实现方案:

1. 固定样本量标注(已知N值)

如果已经明确样本数(比如你提到的24),用annotate()函数在图的指定位置添加文本即可:

library(ggplot2)
# 模拟蟹类数据
crab_data <- data.frame(
  carapace_length = rnorm(24, mean = 5, sd = 0.8),
  habitat = "rocky_shore"
)

# 绘制箱线图并添加N标注
ggplot(crab_data, aes(x = habitat, y = carapace_length)) +
  geom_boxplot(fill = "#4682B4") +
  # 调整x、y参数控制标注位置,y用最大值加偏移避免遮挡图形
  annotate("text", x = 1, y = max(crab_data$carapace_length) + 0.3,
           label = "N = 24", size = 4, fontface = "bold") +
  labs(title = "蟹类甲长分布", y = "甲长(cm)", x = "栖息地")

2. 动态计算单组样本量

不用手动输入N值,直接从数据中提取样本量,适合数据更新后自动同步标注:

# 动态生成标注文本
n_label <- paste("N =", nrow(crab_data))

ggplot(crab_data, aes(x = habitat, y = carapace_length)) +
  geom_boxplot(fill = "#4682B4") +
  annotate("text", x = 1, y = max(crab_data$carapace_length) + 0.3,
           label = n_label, size = 4, fontface = "bold") +
  labs(title = "蟹类甲长分布", y = "甲长(cm)", x = "栖息地")

3. 分组数据添加各组样本量

如果研究涉及多个分组(比如不同栖息地),可以先计算每组样本量,再用geom_text()批量添加:

# 模拟多分组蟹类数据
crab_multi_data <- data.frame(
  carapace_length = c(rnorm(24, 5, 0.8), rnorm(18, 4.5, 0.7), rnorm(32, 5.2, 0.9)),
  habitat = rep(c("rocky_shore", "sandy_beach", "mud_flat"), c(24, 18, 32))
)

# 计算每组样本量并生成标注文本
group_n <- aggregate(. ~ habitat, data = crab_multi_data, FUN = function(x) paste("N =", length(x)))
colnames(group_n)[2] <- "n_label"

# 绘图并添加分组标注
ggplot(crab_multi_data, aes(x = habitat, y = carapace_length)) +
  geom_boxplot(fill = "#4682B4") +
  geom_text(data = group_n, aes(x = habitat, y = max(crab_multi_data$carapace_length) + 0.4, label = n_label),
            size = 4, fontface = "bold") +
  labs(title = "不同栖息地蟹类甲长分布", y = "甲长(cm)", x = "栖息地")

也可以用stat_summary()直接调用ggplot2内置的..n..变量(代表每组样本数),写法更简洁:

ggplot(crab_multi_data, aes(x = habitat, y = carapace_length)) +
  geom_boxplot(fill = "#4682B4") +
  stat_summary(fun = max, geom = "text", aes(label = paste("N =", ..n..)),
               vjust = -0.5, size = 4, fontface = "bold") +
  labs(title = "不同栖息地蟹类甲长分布", y = "甲长(cm)", x = "栖息地")

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.22 23:12:09