求助:在ggplot2中为单箱线图的离群值添加标签的方法
单箱线图中标记离群值的解决方案
优化离群值识别代码
首先简化mutate中的代码,dplyr环境下直接引用列名即可,无需额外指定数据框:
# 创建离群值识别函数 findoutlier <- function(x) { return(x < quantile(x, .25) - 1.5*IQR(x) | x > quantile(x, .75) + 1.5*IQR(x)) } # 添加离群值标记列 performance_tibble <- performance_tibble %>% mutate(outlier = ifelse(findoutlier(Perc_Correct), Pt_ID, NA))
绘制带标记的箱线图
单箱线图虽然只定义了y轴,但ggplot默认会给x轴分配一个隐含的单一分类位置(对应x=1),只需在geom_text中指定这个x值即可:
ggplot(performance_tibble) + geom_boxplot(aes(y = Perc_Correct), outlier.colour = "red") + # 指定x=1对齐箱线图位置,用Perc_Correct作为y坐标,outlier作为标签 geom_text(aes(x = 1, y = Perc_Correct, label = outlier), na.rm = TRUE, # 忽略非离群值的NA行 hjust = -0.2) + # 调整标签位置到点的右侧,避免遮挡 theme(axis.text.x = element_blank(), axis.ticks.x = element_blank())
关键参数说明
x=1:对应单箱线图在x轴的默认位置,保证标签和离群点对齐na.rm=TRUE:过滤掉outlier列中为NA的行,避免绘制空文本hjust=-0.2:水平调整标签位置,让标签显示在离群点的右侧,可根据需要调整数值(比如改为1.2让标签在左侧)
内容的提问来源于stack exchange,提问作者SilvaC
相关产品推荐
相关产品推荐

