在facet' ed geom_boxplot中更改whisker定义

时间:2015-03-10 10:51:38

标签: r ggplot2 boxplot outliers

我用多个变量的箱线图创建了一个facet_grid。举一个例子,可以通过跟随伪数据来再现图表

require(ggplot2)
require(plyr)
library(reshape2)

set.seed(1234)
x<- rnorm(100)
y.1<-rnorm(100)
y.2<-rnorm(100)
y.3<-rnorm(100)
y.4<-rnorm(100)

df<- (as.data.frame(cbind(x,y.1,y.2,y.3,y.4)))
dfmelt<-melt(df, measure.vars = 2:5)

并将结果图创建为

dfmelt$bin <- factor(round_any(dfmelt$x,0.5))
ggplot(dfmelt, aes(x=bin, y=value, fill=variable))+
  geom_boxplot()+
  facet_grid(.~bin, scales="free")+
  labs(x="X (binned)")+
  theme(axis.text.x=element_blank())

给出以下结果: enter image description here

然而,我想重新定义boxplot胡须,所以他们不代表0.25 - 1.5 IQR / 0.75 + IQR和异常值,但(i)完整的第5和第95百分位数或(ii)infinum和supremum数据

1 个答案:

答案 0 :(得分:2)

您可以使用stat_summary自定义外观,例如

ggplot(dfmelt, aes(x=bin, y=value, fill=variable)) + 
stat_summary(geom = "boxplot", 
             fun.data = function(x) setNames(quantile(x, c(0.05, 0.25, 0.5, 0.75, 0.95)), c("ymin", "lower", "middle", "upper", "ymax")), 
             position = "dodge")