所有变量(百分位数为R)的带离群值的盒形图

所有变量(百分位数为R)的带离群值的盒形图,r,ggplot2,dplyr,gplots,R,Ggplot2,Dplyr,Gplots,在我的数据集中 comp=structure(list(MYCT = c(125L, 29L, 29L, 29L, 29L, 26L, 23L, 23L, 23L, 23L, 400L, 400L), MMIN = c(256L, 8000L, 8000L, 8000L, 8000L, 8000L, 16000L, 16000L, 16000L, 32000L, 1000L, 512L), MMAX = c(6000L, 32000L, 32000L, 32000L, 16000L, 32

在我的数据集中

comp=structure(list(MYCT = c(125L, 29L, 29L, 29L, 29L, 26L, 23L, 23L, 
23L, 23L, 400L, 400L), MMIN = c(256L, 8000L, 8000L, 8000L, 8000L, 
8000L, 16000L, 16000L, 16000L, 32000L, 1000L, 512L), MMAX = c(6000L, 
32000L, 32000L, 32000L, 16000L, 32000L, 32000L, 32000L, 64000L, 
64000L, 3000L, 3500L), CACH = c(256L, 32L, 32L, 32L, 32L, 64L, 
64L, 64L, 64L, 128L, 0L, 4L), CHMIN = c(16L, 8L, 8L, 8L, 8L, 
8L, 16L, 16L, 16L, 32L, 1L, 1L), CHMAX = c(128L, 32L, 32L, 32L, 
16L, 32L, 32L, 32L, 32L, 64L, 2L, 6L), PRP = c(198L, 269L, 220L, 
172L, 132L, 318L, 367L, 489L, 636L, 1144L, 38L, 40L), ERP = c(199L, 
253L, 253L, 253L, 132L, 290L, 381L, 381L, 749L, 1238L, 23L, 24L
)), .Names = c("MYCT", "MMIN", "MMAX", "CACH", "CHMIN", "CHMAX", 
"PRP", "ERP"), class = "data.frame", row.names = c(NA, -12L))
我有8个变量。我需要得到箱线图,其中异常值用红色圆圈表示,并且有百分位数刻度。 现在我写的很简单

boxplot(comp$MMIN)
但是这个图没有异常值。 我期待这样的事情

例如,在这张图片中,我看到两个异常值,高于75%。 这是我需要的每8个变量的曲线图。
如何执行它?

这里有一个使用基本图形的可能解决方案。关键是抑制y轴,然后根据汇总统计信息添加记号

#build the box plot and surpress the y axis lables 
b<-boxplot(comp$MMIN, yaxt="n", range=1.1)
points(x=rep(1, nrow(comp)), y=comp$MMIN)
#highlight outliers
points(x=rep(1, length(b$out)), y=b$out, col="red", pch=19)

#get the points for the y axis
myscale<-summary(comp$MMIN)
#remove the median
myscale<-myscale[-3]
#add the y-axis
axis(2, b$stats, labels=c(0, 25, 50, 75, 100))

#use this option for labels on both the right and left side
b<-boxplot(comp$MMIN, outline = FALSE)
axis(4, b$stats, labels=c(0, 25, 50, 75, 100))
#构建方框图并超出y轴标签

b决不是一个现成的解决方案,但这应该会让你走上正轨

off=0.55
ggplot() + 
    geom_boxplot(data=comp,
        aes(x="",y=MMIN),
        # custom outliers
        outlier.colour="red",
        outlier.fill="red",
        outlier.size=3
    ) +
    geom_line(aes(x=c(off,off),y=c(5000,20000))) +
    geom_text(aes(x=c(off,off),y=c(5000,20000),label=c("needs to", "be calculated")))

如果没有异常值,则
comp$MMIN
中可能没有异常值。对于包含8个变量的箱线图,请尝试
boxplot(comp)
@RuiBarradas,我知道这个技巧,但是我如何用百分位数来可视化我想要的异常值?您的绘图是错误的。50%是中位数(大黑线)。75%是盒子的顶部边缘。@AndreElrico,是的。我只是想展示我需要的,这个比例是用油漆做的,当然,这是错误的,为什么你认为有异常值?有关如何计算长方体、胡须和异常值的信息,请参见。因此,向量
MMIN
没有异常值。安德烈,也许这个解决方案有意义。我想我问了一个很难的问题。是否可能从数据集中删除图形中的异常点?Dave2e对这种可能性有何看法?@varimax这正是你想要的,但你怎么能对8列这样做呢?各列的分位数将不同。除非您使用
par(mfrow=c(2,4))
并同时绘制一个。我需要使用异常值绘制以删除itI。我已尽力根据发布的数据和示例插入您所需的解决方案。如果这不正确,请澄清问题。你对离群值的定义是什么?Dave2e,很简单。现在我们看到5个离群值圆(对吗?)。如何从数据集中删除它?