【问题标题】:How to change the color of outliers of certain category in boxplot()?如何更改 boxplot() 中某个类别的异常值的颜色?
【发布时间】:2019-11-30 11:28:18
【问题描述】:

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

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

red 仅适用于mydata[,1]M 的元素。

【问题讨论】:

    标签: r boxplot rnw


    【解决方案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")
    

    【讨论】:

    • 有一个 BP$group:一个与 out 长度相同的向量,其元素指示异常值属于哪个组。我不应该用这个吗?如果两个图中的值相同,则将它们打印在两个图中。
    • NVM。刚刚做到了: OUT3 = which(mydata[,3] %in% BP$out[which(BP$group==2)])
    猜你喜欢
    • 2020-11-30
    • 1970-01-01
    • 2023-04-07
    • 1970-01-01
    • 2020-10-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多