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)
我想这个问题仍然很重要,因为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)了解更多详情。
我知道的唯一方法是自己计算框值,如下所示:
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
,但您应该能够安全地忽略它们。