我试图获取ggplot2的geom_boxplot的胡须来覆盖异常值。异常值事实上不会显示为点,因为它们包含在箱图中。
如果我使用标准的'boxplot',我会使用:
boxplot(x, range=n)
其中 n 是一个很大的数字,因此,不是显示异常值,而是使用箱形图的延伸来覆盖异常值。
如何使用ggplot2完成此操作? 我试过了:
ggplot(myDF, aes(x=x, y=y)) +
geom_boxplot(range = 5)
注意:我不想使用以下内容丢弃异常值:
geom_boxplot(outlier.shape = NA)
答案 0 :(得分:4)
我想,这个问题仍然具有相关性,因为谷歌搜索前三的这个页面关于那个异常值问题。所以:
处理异常值的更简单方法是(至少在2016年4月4日之前的最新ggplot中)使用" coef":
... + geom_boxplot(coef = 5)
从手册(?geom_boxplot 输出复制粘贴下面):
coef 胡须的长度是IQR的倍数。默认为1.5
<强>详情
上部晶须从铰链延伸到最高值 在铰链的1.5 * IQR范围内,其中IQR是四分位数间距, 或第一和第三四分位数之间的距离。较低的胡须 从铰链延伸到1.5 * IQR内的最低值 合页。超出胡须末端的数据是异常值并绘制为 点(由Tukey指定)。
在缺口框图中,凹口延伸1.58 * IQR / sqrt(n)。这个 给出了大约95.见McGill等人。 (1978)了解更多细节。
答案 1 :(得分:3)
我所知道的唯一方法是自己计算盒子值:
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')
ddply
来电时有一些警告,但你应该可以安全地忽略它们。