2014-11-13 155 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