2014-11-13 101 views
1

在ggplot2中,我希望胡须延伸到数据集的最小值和最大值,并且不显示异常值。我发现了隐藏异常值的方法,但是我一直无法让胡须延伸到每个组的最小值和最大值。ggplot2 - Boxplot Whiskers最小值/最大值

a <- data.frame(group = "a", value = rnorm(10)) 
b <- data.frame(group = "b", value = rnorm(100)) 
c <- data.frame(group = "c", value = rnorm(1000)) 

data <- rbind(a, b, c) 

ggplot(data, aes(x=group, y=value)) + 
    stat_boxplot(geom ='errorbar') + 
    geom_boxplot() #geom_boxplot(outlier.shape = NA) 

问:什么是正确的方法来设置GGPLOT2箱图,使胡须延伸到最小和最大?


+0

你看过这个问题吗?在geom中改变晶须的定义_boxplot](http://stackoverflow.com/questions/4765482/changing-whisker-definition-in-geom-boxplot)? – LJW

+0

这个问题的答案确实将箱线图的范围扩展到最小值和最大值,然而,胡须的误差线似乎并没有跟随它,使得距离线远远超出误差线。 – lolcodez

回答

2

继所需产物的评论,我认为这是你想要的东西:

enter image description here

a <- data.frame(group = "a", value = rnorm(10)) 
b <- data.frame(group = "b", value = rnorm(100)) 
c <- data.frame(group = "c", value = rnorm(1000)) 

data <- rbind(a, b, c) 

o <- function(x) { 
    subset(x, x == max(x) | x == min(x)) 
} 

f <- function(x) { 
    r <- quantile(x, probs = c(0.00, 0.25, 0.5, 0.75, 1)) 
    names(r) <- c("ymin", "lower", "middle", "upper", "ymax") 
    r 
} 

ggplot(data, aes(x=group, y=value)) + 
    stat_summary(fun.data=f, geom="boxplot") + 
    stat_summary(fun.y = o, geom="point") + 
    stat_boxplot(geom='errorbar',coef=10) #just give an arbitrarily big number here 

UPDATE 您可以在stat_boxplot功能COEF参数添加胡须

+0

感谢您的回复。这可以正确地扩展范围,但不会跟随误差线,从而使得范围远远超出误差线。 (即stat_boxplot(geom ='errorbar')) – lolcodez