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?
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:
If you only want to control the whiskers, there is an easy solution with geom_boxplot
as well. The coef
argument controls how far the whiskers stretch. It defaults to 1.5
, meaning that the whiskers reach out to 1.5*IQR. If you set this value to NULL
, the whiskers will stretch out as far as possible, ie to the minimum and maximum:
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', coef=NULL) +
geom_boxplot(coef=NULL)
The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.