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

如何在箱线图上显示异常值对应的ID

在箱线图上标注极端值对应的样本ID

1. 先筛选出离群点(极端值)

箱线图的离群点定义为小于Q1 - 1.5*IQR或大于Q3 + 1.5*IQR的数值,先计算阈值并提取对应ID:

# 你的原始数据集
Poids<-c(round(rnorm(100,65,10),1),10,53,120,98)
ID<-c(paste("A",1:26,sep = ""),paste("B",1:26,sep = ""),paste("C",1:26,sep = ""),paste("D",1:26,sep = ""))
mydata<-data.frame(ID=ID,Poids=Poids)

# 计算四分位数与IQR
q1 <- quantile(mydata$Poids, 0.25)
q3 <- quantile(mydata$Poids, 0.75)
iqr <- q3 - q1

# 定义离群点阈值
lower_limit <- q1 - 1.5 * iqr
upper_limit <- q3 + 1.5 * iqr

# 筛选所有离群点及其ID
outlier_data <- mydata[mydata$Poids < lower_limit | mydata$Poids > upper_limit, ]

2. 用基础R绘制带ID标注的箱线图

直接用基础R工具链实现,操作简单直观:

# 绘制基础箱线图
boxplot(mydata$Poids, main = "体重箱线图", ylab = "体重")

# 在每个离群点上方标注对应的ID
text(x = 1, y = outlier_data$Poids, labels = outlier_data$ID, pos = 3)

3. 用ggplot2绘制更美观的标注箱线图

如果需要更灵活的样式控制,推荐用ggplot2,还能解决标注重叠问题:

普通标注方式

library(ggplot2)

ggplot(mydata, aes(x = "", y = Poids)) +
  geom_boxplot() +
  # 在离群点上方添加ID标注,vjust调整垂直位置
  geom_text(data = outlier_data, aes(label = ID), vjust = -0.5) +
  labs(title = "体重箱线图(带离群点ID)", y = "体重", x = "") +
  theme_minimal()

自动避免标注重叠(用ggrepel包)

若离群点密集导致标注重叠,用ggrepel包自动调整位置:

library(ggrepel)

ggplot(mydata, aes(x = "", y = Poids)) +
  geom_boxplot() +
  geom_text_repel(data = outlier_data, aes(label = ID)) +
  labs(title = "体重箱线图(带离群点ID)", y = "体重", x = "") +
  theme_minimal()

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.06 00:35:16