在R中的boxplot上标记异常值

use*_*894 5 label r outliers boxplot

我想将矩阵的每一列绘制成一个箱线图,然后将每个箱图中的异常值标记为它们在矩阵中所属的行名称.举个例子:

vv=matrix(c(1,2,3,4,8,15,30),nrow=7,ncol=4,byrow=F)
rownames(vv)=c("one","two","three","four","five","six","seven")
boxplot(vv)
Run Code Online (Sandbox Code Playgroud)

我想将每个图中的异常值(在本例中为30)标记为它所属的行名,因此在这种情况下30属于第7行.有一种简单的方法可以做到这一点吗?我已经看到类似的问题,但似乎没有一个像我想要的那样工作.

小智 8

有一个简单的方法.请注意,以下行中的Boxplot中的b是大写字母.

library(car)

Boxplot(y ~ x, id.method="y")
Run Code Online (Sandbox Code Playgroud)


小智 5

或者,您可以使用{car}包中的"Boxplot"功能为您标记异常值.

请参阅以下链接:https://CRAN.R-project.org/package=car


42-*_*42- 4

在给出的示例中,它有点无聊,因为它们都在同一行。但这里是代码:

bxpdat <- boxplot(vv)
text(bxpdat$group,                                              # the x locations 
     bxpdat$out,                                                # the y values
     rownames(vv)[which(vv == bxpdat$out, arr.ind=TRUE)[, 1]],  # the labels
     pos = 4)  
Run Code Online (Sandbox Code Playgroud)

这会选择结果中具有等于“out”列表(即离群值)值的行名boxplot。Boxplot 调用并返回 中的值boxplot.stats。看一眼:

 str(bxpdat)
Run Code Online (Sandbox Code Playgroud)