geom_boxplot 给出了错误的箱线图须。

4

我正在使用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)

我的理解如下:

enter image description here

第三分位数与上缺口重合。我进行了手动计算,结果如下:

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设置有什么误解吗?非常感谢您的帮助和建议!

1个回答

5

引用部分的意思是:

上侧须从中位数延伸到距离中位数1.5*IQR(IQR为四分位差,即第一和第三个四分位之间的距离)最大值不超过1.5*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")

enter image description here


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接