如何在boxplot()中更改某些类别的离群值的颜色?

时间:2019-11-30 11:28:18

标签: r boxplot rnw

简单地讲,我想为离群值着色,但前提是它们属于特定类别,即我想要

boxplot(mydata[,2:3], col=c("chartreuse","gold"), outcol="red")

但是red仅适用于mydata[,1]M的那些元素。

1 个答案:

答案 0 :(得分:1)

看来outcol仅为每个变量(框)指定一种颜色。但是,您可以使用points以任意方式对各个点进行绘图。您需要找出相关的x和y坐标以用于绘图。当使用类似boxplot(mydata[,2:3])的语句制作箱线图时,第一个变量(第2列)绘制在x = 1处,而第二个变量(第3列)绘制在x = 2处。通过捕获boxplot的返回值,您可以算出y值。由于您没有提供任何数据,因此我将使用随机生成的数据进行说明。

## Data
set.seed(42)
NumPts = 400
a = rnorm(NumPts)
b = rnorm(NumPts)
c = rnorm(NumPts)
CAT = sample(c("M", "N"), NumPts, replace=T)
mydata = data.frame(a,b,c, CAT)

## Find outliers
BP = boxplot(mydata[,2:3], col=c("chartreuse","gold"))
OUT2 = which(mydata[,2] %in% BP$out)
OUT3 = which(mydata[,3] %in% BP$out)

## Find outliers with category == M
M_OUT2 = OUT2[which(mydata$CAT[OUT2] == "M")]
M_OUT3 = OUT3[which(mydata$CAT[OUT3] == "M")]

## Plot desired points
points(rep(1, length(M_OUT2)),mydata[M_OUT2, 2], col="red")
points(rep(2, length(M_OUT3)),mydata[M_OUT3, 3], col="red")

Boxplot with selected points colored