相当于ggplot2的boxplot中的'range'

Ant*_*Ant 5 r outliers ggplot2 boxplot

我试图让ggplot2的geom_boxplot的胡须覆盖异常值.事实上,异常值不会显示为点,因为它们被箱图包围.

如果我使用标准的'boxplot',我将使用:

boxplot(x, range=n)
Run Code Online (Sandbox Code Playgroud)

其中ñ将是一个大数目,使得,而不是显示异常值,该箱线图的胡子延伸覆盖异常值.

如何用ggplot2完成?我试过了:

ggplot(myDF, aes(x=x, y=y)) +
geom_boxplot(range = 5)
Run Code Online (Sandbox Code Playgroud)

注意:我不想使用以下内容丢弃异常值:

geom_boxplot(outlier.shape = NA) 
Run Code Online (Sandbox Code Playgroud)

Dmi*_*riy 5

我想这个问题仍然很重要,因为Google搜索结果的前三页中有关于该异常值问题的页面。所以:

处理离群值的更简单方法是(至少在截至2016年4月4日的最新ggplot中)使用“ coef”:

... + geom_boxplot(coef = 5)
Run Code Online (Sandbox Code Playgroud)

从手册(下面的?geom_boxplot输出复制粘贴)中:

晶须的 coef长度为IQR的倍数。默认为1.5

细节

上晶须从铰链延伸到铰链的1.5 * IQR以内的最大值,其中IQR是四分位数间距或第一和第三四分位数之间的距离。下晶须从铰链延伸到铰链1.5 * IQR内的最小值。晶须末端以外的数据是异常值,并绘制为点(由Tukey指定)。

在带槽的箱图中,槽口扩展为1.58 * IQR / sqrt(n)。得出大约95。见McGill等。(1978)了解更多详情。


jor*_*ran 4

我知道的唯一方法是自己计算框值,如下所示:

library(plyr)
xx <- ddply(mtcars,.(cyl),
            transform,
            ymin = min(mpg),
            ymax = max(mpg),
            middle = median(mpg),
            lower = quantile(mpg,0.25),
            upper = quantile(mpg,0.75))

ggplot(data = xx,aes(x = factor(cyl))) + 
    geom_boxplot(aes(ymin = ymin,ymax = ymax,middle = middle,upper = upper,lower= lower),
                 stat = 'identity')
Run Code Online (Sandbox Code Playgroud)

通话中会出现一些警告ddply,但您应该能够安全地忽略它们。