R中的Boxplot异常值标记

Fed*_*rgi 5 r

我想在R中绘制箱图并为异常值添加名称.到目前为止,我发现了这个解决方案.

那里的功能提供了我需要的所有功能,但它不正确地标记标签.在以下示例中,它将异常值标记为"u"而不是"o":

library(plyr)
library(TeachingDemos)
source("http://www.r-statistics.com/wp-content/uploads/2011/01/boxplot-with-outlier-label-r.txt") # Load the function
set.seed(1500)
y <- rnorm(20)
x1 <- sample(letters[1:2], 20,T)
lab_y <- sample(letters, 20)
# plot a boxplot with interactions:
boxplot.with.outlier.label(y~x1, lab_y)
Run Code Online (Sandbox Code Playgroud)

你知道任何解决方案吗?ggplot2库非常好,但没有提供这样的功能(据我所知).我的替代方法是使用text()函数并从boxplot对象中提取异常值信息.但是,像这样标签可能会重叠.

非常感谢 :-)

Jos*_*ien 6

我看了看这个debug(boxplot.with.outlier.label),并且......结果证明bug这个功能中有一个.

上线125,其中该data.frame发生了错误DATA,从构造x,ylabel_name.

以前xy已经重新订购,而lab_y没有.当x(你的x1)提供的价值本身不是有序时,你会得到你经历过的那种混乱.

作为即时修复,您可以预先订购这样的x值(或做一些更优雅的事情)

df <- data.frame(y, x1, lab_y, stringsAsFactors=FALSE)
df <- df[order(df$x1), ]
# Needed since lab_y is not searched for in data (though it probably should be)
lab_y <- df$lab_y  

boxplot.with.outlier.label(y~x1, lab_y, data=df)
Run Code Online (Sandbox Code Playgroud)

通过上述程序产生的箱图