【问题标题】:Labelling outliers in ggBoxplot在 ggBoxplot 中标记异常值
【发布时间】:2019-06-17 16:15:39
【问题描述】:

我正在尝试在从下面的数据框生成的多组箱形图中注释异常值:

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 %&gt;% group_by(Chr.) %&gt;% mutate(outlier = ifelse(is_outlier(value), value, as.numeric(NA))) %&gt;% ggplot(., aes(x = factor(Chr.), y = value)) + geom_boxplot() + geom_text(aes(label = outlier), na.rm = TRUE, hjust = -0.3)

但是由于某种原因,这不起作用。我想用variable 列中的相应值标记异常值。任何建议都非常感谢!

【问题讨论】:

  • 我不认为我理解您的示例代码。它应该与您的示例数据集或链接问题中的数据一起使用吗?您的变量称为value(我认为),而不是drat。而且您缺少将文本变量作为字符串的代码,这是链接答案中标签所基于的代码。您能否添加更多代码以便我们看到它(可能还有一个包含异常值的示例数据集:-))?
  • 感谢您的有益建议。我相应地进行了编辑!
  • 我不明白。您的情节有您所要求的:标有其价值的异常值。您能否更具体地说明您认为哪里出了问题?
  • 哦,太好了,我想我现在明白了。您正在使用的答案分两步制作标签:首先他们制作一个逻辑变量is_outlier,然后他们从中制作标签。您可以在mutate() 通话中一步完成此操作。喜欢mutate(outlier = ifelse(is_outlier(value), as.character(variable), NA))。请注意,我使用variable 作为标签而不是value
  • @aosmith 非常感谢您的帮助。它解决了这个问题。您能否也将其发布为答案,以便我可以将此线程标记为已解决。

标签: r ggplot2


【解决方案1】:

现在,您正在将标签变量 outliervalue 中提取出来,而不是从 variable 中提取出来。

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

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

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

【讨论】:

    猜你喜欢
    • 2020-12-24
    • 2020-08-27
    • 2015-12-28
    • 1970-01-01
    • 2021-11-06
    • 2019-06-24
    • 2020-02-01
    • 1970-01-01
    • 2013-02-17
    相关资源
    最近更新 更多