Welcome to OGeek Q&A Community for programmer and developer-Open, Learning and Share
Welcome To Ask or Share your Answers For Others

Categories

0 votes
1.5k views
in Technique[技术] by (71.8m points)

r - ggplot2 - Boxplot Whiskers at Min/Max

In ggplot2, I would like to have the whiskers extend to the min and max values for a data set and not show the outliers. I've found the method to hide the outliers but I have been unable to get the whiskers to extend to the min and max for each group.

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)

Q: What is the correct way to setup ggplot2 boxplots so that the whiskers extend to the min and max?


See Question&Answers more detail:os

与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
Welcome To Ask or Share your Answers For Others

1 Reply

0 votes
by (71.8m points)

Following LJW's comment I think this is what you want:

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 You can add the whiskers with the coef argument in the stat_boxplot function:

enter image description here


与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
OGeek|极客中国-欢迎来到极客的世界,一个免费开放的程序员编程交流平台!开放,进步,分享!让技术改变生活,让极客改变未来! Welcome to OGeek Q&A Community for programmer and developer-Open, Learning and Share
Click Here to Ask a Question

...