简而言之,我想为异常值着色,但前提是它们属于特定类别,即我想要
boxplot(mydata[,2:3], col=c("chartreuse","gold"), outcol="red")
但red
仅适用于那些mydata[,1]
为M
.
似乎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")