首页 > 解决方案 > 箱线图仅提供两个变量值之一的线/范围

问题描述

因此,我正在尝试针对一个离散的是/否变量制作一个非常简单的箱线图,其中一个连续变量是/否变量,由于我完全不明白的原因,我无法让范围条显示“否”值。

这是一个简化的数据集......在您的工作目录中保存为“femplot.csv”

SEQN,LBXVBZ,smoke
73614,0.206,YES
73616,0.017,NO
73739,0.017,NO
73751,0.135,YES
73763,0.237,YES
73766,0.017,NO
73805,0.19,YES
73848,0.017,NO
73914,0.198,YES
73924,0.017,NO
73938,0.161,YES
73975,0.167,YES
74006,0.031,YES
74007,0.017,NO
74008,0.017,NO
74022,0.147,YES
74046,0.017,NO
74054,0.017,NO
74091,0.156,YES
74101,0.179,YES
74141,0.106,NO
74150,0.115,YES
74154,0.017,NO
74160,0.017,NO
74173,0.035,NO
74180,0.017,NO
74195,0.017,NO
74211,0.017,NO
74221,0.078,YES

现在这是我的代码......我正在尝试使用 R-native boxplot 函数和 ggplot,结果相同:

library(ggplot2)

femplot <- read.csv("femplot.csv")

boxplot(LBXVBZ~smoke, data = femplot)

ggplot(data = femplot, aes(x=smoke, y=LBXVBZ))+
  stat_boxplot(geom="errorbar", width=0.5, coef = 10)+
  geom_boxplot()+
  stat_summary(fun = "mean", shape=23, color="red")+
  labs(x="Smoker", y="Benzene"),
       title = "Distribution of blood benzene levels among smokers/nonsmokers") 

这是输出。请注意,“YES”值上有一个框线和范围线,但“NO”没有。事实上,对于“否”,该框非常小,所以这很好,但我仍然应该得到范围线,因为有点来表示范围。我没有费心包含标准箱线图输出的图像,但它是等效的。 样本输出

标签: rggplot2boxplot

解决方案


我主要是要重复评论中所说的话,但这样就可以回答了。

您的“否”几乎都是 0.017。至少,它们中的数量足以使少数不是异常值。发生这种情况是因为平均值和两个四分位数都是 0.017。这也使您的 IQR 为 0,并且由于范围线显示 1.5*IQR,因此不会有任何。因此,您的情节是正确的。只是为了显示所有内容:

library(ggplot2)

data <- read.csv("~/Desktop/boxplot stack.csv")

ggplot(data, aes(x = smoke, y = LBXVBZ))+
  geom_boxplot()+
  labs(x="Smoker", y="Benzene")+
  ggtitle("Distribution of blood benzene levels among smokers/nonsmokers")+
  theme_bw()

在此处输入图像描述

这和你发的一模一样,但我只是想把所有的东西都放下。


推荐阅读