【问题标题】:geom_boxplot gave wrong whiskersgeom_boxplot 给出了错误的胡须
【发布时间】:2019-12-27 06:50:28
【问题描述】:

我正在使用 ggplot2 中的 geom_boxplot 制作箱线图。但是,我发现胡须长度不正确,我不知道为什么。这是我的数据:

value = c(1.3739117,0.8709891,3.4510461,0.8470309,1.4838725,0.6942611,1.3095816,3.0444649,19.2785424,1.0866242,0.9376845,2.2343836, 20.7975509, 20.3102489, 18.0046679,1.4197519)
data = data.frame(value)
ggplot(data, aes(y = value)) +
   stat_boxplot(geom = "errorbar", width = 0.3) +
   geom_boxplot(width = 0.5)

我看到的情节是这样的:

第三个分位数与上面的须重叠。我手动计算了一下,结果如下:

summary(data)
Min.   : 0.6943  
1st Qu.: 1.0494  
Median : 1.4518  
Mean   : 6.0715  
3rd Qu.: 7.0895  
Max.   :20.7976

基于 geom_boxplot 的解释:上胡须从铰链延伸到最大值不超过铰链的 1.5 * IQR(其中 IQR 是四分位数间距,或第一和第三四分位数之间的距离)。下晶须从铰链延伸到铰链的最小值,最多为 1.5 * IQR。

在我的例子中,IQR 是:7.0895-1.0494 = 6.0401

下须线应为:0.6943 - 1.5*6.0401 = -8.36585

上须线应为:7.0895 + 1.5*6.0401 = 16.14965

我知道负的下须是没有意义的,所以这里用最小值代替。但是为什么没有显示上面的晶须呢?我很困惑,我在网上找不到解决这个问题的例子。我对 ggplot 设置有什么误解?非常感谢您的帮助和建议!

【问题讨论】:

    标签: r ggplot2 boxplot


    【解决方案1】:

    来自引用部分:

    上胡须从铰链延伸到 最大值 no 距离铰链远大于 1.5 * IQR(其中 IQR 是四分位数 范围,或第一和第三四分位数之间的距离)。

    “价值”是指来自原始数据点。如果您绘制数据,则在 7.09 和 16.15 (+1.5*IQR) 的顶部铰链之间没有值。如果这些四分位数是由其中一个值在该范围内的数据产生的,则上面的须线会出现在该范围内。

    ggplot(data, aes(y = value)) +
      geom_jitter(aes(x = 0.5), width = 0.05) +
      stat_boxplot(geom = "errorbar", width = 0.3, 
                   color = "red", size = 1.5) +
      geom_boxplot(width = 0.5, alpha = 0.5) +
      geom_hline(yintercept = c(7.09, 16.15), lty = "dashed")
    

    【讨论】:

      猜你喜欢
      • 2016-04-09
      • 1970-01-01
      • 1970-01-01
      • 2021-12-28
      • 1970-01-01
      • 2022-12-03
      • 1970-01-01
      • 2020-01-22
      • 2015-04-17
      相关资源
      最近更新 更多