【问题标题】:ggplot2 - Boxplot Whiskers at Min/Maxggplot2 - 最小/最大的箱线图胡须
【发布时间】:2015-01-11 06:16:24
【问题描述】:

在 ggplot2 中,我想让胡须扩展到数据集的最小值和最大值,并且不显示异常值。我找到了隐藏异常值的方法,但我无法让胡须扩展到每个组的最小值和最大值。

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 箱线图以使胡须延伸到最小值和最大值的正确方法是什么?


【问题讨论】:

  • Changing whisker definition in geom_boxplot这个问题你看了吗?
  • 该问题的答案确实将箱线图的范围扩展到了最小值和最大值,但是,晶须的误差条似乎没有跟随它,使范围条远远超出了误差酒吧。

标签: r ggplot2


【解决方案1】:

如果您只想控制胡须,geom_boxplot 也有一个简单的解决方案。 coef 参数控制胡须伸展的距离。默认为1.5,表示胡须达到 1.5*IQR。如果将此值设置为NULL,则晶须将尽可能地伸展,即最小和最大:

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)

【讨论】:

    【解决方案2】:

    根据 LJW 的评论,我认为这就是您想要的:

    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
    

    更新 您可以在 stat_boxplot 函数中使用 coef 参数添加胡须:

    【讨论】:

    • 感谢您的回复。这确实正确扩展了范围,但误差线没有跟随,使范围远远超出误差线。 (即 stat_boxplot(geom ='errorbar'))
    猜你喜欢
    • 2019-09-14
    • 2017-05-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-07-26
    • 1970-01-01
    相关资源
    最近更新 更多