R语言箱线图标注airquality数据集Wind列异常值索引的实现
实现方法
你只需要通过匹配异常值的数值,从Wind向量中提取对应的观测索引,再替换标注的label参数即可,修改后的完整代码如下:
library(datasets) library(ggplot2) a <- boxplot(airquality$Wind, plot = FALSE) # 提取异常值对应的观测索引 out_idx <- which(airquality$Wind %in% a$out) qplot(y = airquality$Wind, geom = 'boxplot') + annotate(geom = "text", x = rep(0.1, length(a$out)), y = a$out, label = out_idx, size = 2.5)
补充说明
如果你的数据集存在和异常值数值相同的非异常值,为了避免%in%出现误匹配,可以直接通过箱线图的官方判定规则计算索引,结果更严谨:
library(datasets) library(ggplot2) # 手动计算异常值判定边界 q <- quantile(airquality$Wind, c(0.25, 0.75), na.rm = TRUE) iqr <- IQR(airquality$Wind, na.rm = TRUE) upper_bound <- q[2] + 1.5 * iqr lower_bound <- q[1] - 1.5 * iqr # 直接筛选符合异常值条件的观测索引 out_idx <- which(airquality$Wind > upper_bound | airquality$Wind < lower_bound) out_value <- airquality$Wind[out_idx] qplot(y = airquality$Wind, geom = 'boxplot') + annotate(geom = "text", x = rep(0.1, length(out_idx)), y = out_value, label = out_idx, size = 2.5)
内容的提问来源于stack exchange,提问作者Ejrionm
相关产品推荐
相关产品推荐

