在ggBoxplot中标记离群值

时间:2019-06-17 16:15:39

标签: r ggplot2

我试图在由以下数据框生成的多组箱形图中标注离群值:

Chr. variable value 1 1 W01 21270 2 2 W01 15478 3 3 W01 12479 4 4 W01 9293 5 5 W01 9936 6 6 W01 13160 7 7 W01 10386 8 8 W01 8021 9 9 W01 9627 10 10 W01 9635 11 11 W01 12918 12 12 W01 11617 13 13 W01 4158 14 14 W01 6863 15 15 W01 7259 16 16 W01 10021 17 17 W01 12567 18 18 W01 3752 19 19 W01 15910 20 20 W01 5557 21 21 W01 2908 22 22 W01 5247 23 X W01 4052 24 Y W01 42 25 1 W02 24278 26 2 W02 17624 27 3 W02 14105 . . . . . .

我采用了this thread:

的以下解决方案

is_outlier <- function(x) { return(x < quantile(x, 0.25) - 1.5 * IQR(x) | x > quantile(x, 0.75) + 1.5 * IQR(x)) }

dat.m %>% group_by(Chr.) %>% mutate(outlier = ifelse(is_outlier(value), value, as.numeric(NA))) %>% ggplot(., aes(x = factor(Chr.), y = value)) + geom_boxplot() + geom_text(aes(label = outlier), na.rm = TRUE, hjust = -0.3)

enter image description here

但是由于某些原因,此方法不起作用。我想在variable列中用相应的值标记异常值。任何建议,不胜感激!

1 个答案:

答案 0 :(得分:0)

现在,您正在使用outlier而不是value来制作标签变量variable

要使用variable作为标签,您需要将mutate()中的代码更改为类似的

mutate(outlier = ifelse(is_outlier(value), as.character(variable), NA) )

代码的as.character()部分与处理因子有关。如果variable已经是一个字符而不是一个因子,则您将不需要它。