R语言 如何将中值、第一四分位数和最后四分位数的值绘制成箱线图?

ffvjumwh  于 2023-02-01  发布在  其他
关注(0)|答案(4)|浏览(281)

如何给箱线图赋值并控制其宽度?

X<-c(1,2,,3,4,4,5,5,6,6,6,6,6,7)

我需要写最小值,最大值,第一四分位数,中位数和最后四分位数。我该怎么写呢?

mfpqipee

mfpqipee1#

您可以使用horizontal = TRUE获取水平箱线图,使用axes = FALSE删除轴。staplewex = 1将装订宽度设置为与箱宽相同
然后,您可以使用fivenum返回用于创建箱线图的统计数据,并将这些数据用作文本标签,不断修改y值,直到获得所需结果

boxplot(X, horizontal = TRUE, axes = FALSE, staplewex = 1)
text(x=fivenum(X), labels =fivenum(X), y=1.25)

请注意,我已经插入了一个3,作为示例数据X中缺少的值

clj7thdc

clj7thdc2#

mnel给出的答案是完美的,假设(如示例所示)没有异常值,那么下须线和上须线就等于最小值和最大值,但是,如果存在异常值,并且我们没有在箱线图函数中指定 * range = 0 *,我们就不能得到正确的标签值,相反,我们可以使用:

text(x=boxplot.stats(X)$stats, labels = boxplot.stats(X)$stats, y = 1.25)

让我们看一个例子:

    • 横向**
X <- c(1,2,3,3,4,4,5,5,6,6,6,6,10,15)
boxplot(X, horizontal = TRUE, axes = FALSE, staplewex = 1)

1.错误值text(x = fivenum(X), labels = fivenum(X), y = 1.25)

1.正确值:text(x = boxplot.stats(X)$stats, labels = boxplot.stats(X)$stats, y = 1.25)

    • 垂直**

text中切换x和y的参数。

boxplot(X, axes = FALSE, staplewex = 1)
text(y = boxplot.stats(X)$stats, labels = boxplot.stats(X)$stats, x = 1.25)

kxeu7u2r

kxeu7u2r3#

我在试图理解箱线图四分位数标签并与汇总函数值进行比较时遇到了一些问题,所以我想与您分享。
有时使用fivenum或stats的箱线图中的四分位数标签与r汇总函数值相比会有差异。这种情况只发生在偶数数据集上。
例如(使用文本(x =箱线图.统计(X)$统计,标签=箱线图.统计(X)$统计,y = 1.25)):

product<-c(3,12,20,25,30,35,70,70,80,150)

summary(product)
Min. 1st Qu.  Median    Mean 3rd Qu.    Max. 
3.00   21.25   32.50   49.50   70.00  150.00 

boxplot(product,horizontal=TRUE,col="grey",staplewex=1,axes=FALSE)
text(x = boxplot.stats(product)$stats, labels = boxplot.stats(product)$stats, y = 1.25)

BoxplotFiveNum
如图所示,这些值不匹配。
在这种情况下,您可以使用分位数函数:

text(x=quantile(produto),labels=quantile(produto),y=1.25)

BoxplotQuantile
现在你应该得到与汇总函数中列出的值相同的值。否则就忽略汇总函数,使用fiveNum值代替。差异的出现是由于统计学家之间缺乏普遍的一致性。
谷歌搜索会显示你的分位数计算的差异。

lyr7nygr

lyr7nygr4#

boxplot(X, axes = FALSE, staplewex = 1)
text(y = boxplot.stats(X)$stats, labels = boxplot.stats(X)$stats, x = 1.25)

如何做到这一点,但在多箱线图

示例数据:

a <- data.frame(
    Rank = c(1,2,3,1,2,3,1,2,3,3,2,1,3,2,1,2,1,3,3,3,1,1,2,2,1,3 ),
    Time = c(1,1,1,1,1,1,1,1,1,2,2,2,2,2,2,2,2,2,3,3,3,3,3,3,3,3), 
    Value = c(5,10,15,20,30,50,70,80,100,5,7,9,11,15,17,19,17,19,100,200,300,400,500,700,1000,200))

boxplot(a$Value[a$Rank==1] ~ a$Time[a$Rank==1])

相关问题