當前位置: 首頁>>代碼示例 >>用法及示例精選 >>正文


R boxplot 箱線圖


R語言 boxplot 位於 graphics 包(package)。

說明

生成給定(分組)值的 box-and-whisker 圖。

用法

boxplot(x, ...)

## S3 method for class 'formula'
boxplot(formula, data = NULL, ..., subset, na.action = NULL,
        xlab = mklab(y_var = horizontal),
        ylab = mklab(y_var =!horizontal),
        add = FALSE, ann = !add, horizontal = FALSE,
        drop = FALSE, sep = ".", lex.order = FALSE)

## Default S3 method:
boxplot(x, ..., range = 1.5, width = NULL, varwidth = FALSE,
        notch = FALSE, outline = TRUE, names, plot = TRUE,
        border = par("fg"), col = "lightgray", log = "",
        pars = list(boxwex = 0.8, staplewex = 0.5, outwex = 0.5),
         ann = !add, horizontal = FALSE, add = FALSE, at = NULL)

參數

formula

公式,例如 y ~ grp ,其中 y 是要根據分組變量 grp(通常是一個因子)分成組的數據值的數值向量。請注意, ~ g1 + g2 相當於 g1:g2

data

data.frame(或列表),應從中獲取formula中的變量。

subset

一個可選向量,指定用於繪圖的觀測值子集。

na.action

一個函數,指示當數據包含 NA 時應該發生什麽。默認設置是忽略響應或組中的缺失值。

xlab, ylab

x 軸和 y 軸注釋,因為R3.6.0 具有非空默認值。可以通過抑製ann=FALSE.

ann

logical 指示是否應注釋軸(通過 xlabylab )。

drop, sep, lex.order

傳遞到 split.default ,請參閱那裏。

x

用於指定要生成箱線圖的數據。數字向量或包含此類向量的單個列表。其他未命名參數將更多數據指定為單獨的向量(每個向量對應於一個分量箱線圖)。數據中允許使用NA

...

對於formula 方法,要傳遞給默認方法的命名參數。

對於默認方法,未命名參數是附加數據向量(除非 x 在被忽略時是一個列表)。命名參數是要傳遞給 bxp 的參數和 graphical parameters ,以及參數 pars 給出的參數(並覆蓋 pars 中的參數)。請注意,bxp 可能會也可能不會使用它傳遞的圖形參數:請參閱其文檔。

range

這決定了圖須從盒子中延伸出多遠。如果 range 為正,則須線延伸到最極端的數據點,該數據點不超過 range 乘以框的四分位數間距。值為零會導致須線延伸至數據極值。

width

給出構成繪圖的框的相對寬度的向量。

varwidth

如果 varwidthTRUE ,則繪製框的寬度與組中觀測值數量的平方根成正比。

notch

如果 notchTRUE ,則在框的每一側繪製一個凹口。如果兩個圖的缺口不重疊,則這是兩個中位數不同的“有力證據”(Chambers 等,1983,第 62 頁)。有關使用的計算,請參閱boxplot.stats

outline

如果 outline 不為 true,則不會繪製離群值(作為點,而 S+ 使用線)。

names

將在每個箱線圖下打印的組標簽。可以是字符向量或 expression (請參閱 plotmath )。

boxwex

應用於所有框的比例因子。當隻有幾個組時,可以通過使框變窄來改善繪圖的外觀。

staplewex

訂書釘線寬度擴展,與框寬度成正比。

outwex

離群線寬度擴展,與框寬度成正比。

plot

如果TRUE(默認值)則生成箱線圖。如果不是,則返回箱線圖所基於的摘要。

border

箱線圖輪廓的可選顏色向量。如果border的長度小於繪圖數,則回收border中的值。

col

如果 col 為非空,則假定包含用於為箱線圖主體著色的顏色。默認情況下,它們采用背景顏色。

log

指示 x 或 y 或兩個坐標是否應以對數刻度繪製的字符。

pars

(可能有很多)更多圖形參數的列表,例如 boxwexoutpch ;這些被傳遞給bxp(如果plot為真);詳情請參閱此處。

horizontal

邏輯表明箱線圖是否應該是水平的;默認FALSE表示垂直框。

add

邏輯,如果 true 將箱線圖添加到當前繪圖。

at

給出應繪製箱線圖的位置的數值向量,特別是當 add = TRUE 時;默認為1:n,其中n 是盒子的數量。

細節

通用函數 boxplot 目前有一個默認方法 ( boxplot.default ) 和一個公式接口 ( boxplot.formula )。

如果多個組作為多個參數或通過公式提供,則將按照參數的順序或因子水平的順序繪製平行箱線圖(請參閱 factor )。

形成箱線圖時將忽略缺失值。

包含以下組件的列表:

stats

一個矩陣,每列包含一組/圖的下須線的極值、下鉸鏈、中值、上鉸鏈和上須線的極值。如果所有輸入都具有相同的類屬性,則該組件也將具有相同的類屬性。

n

一個向量,其中包含每組中的(非 NA )觀察值數量。

conf

一個矩陣,其中每列包含凹口的下限和上限。

out

超出晶須極限的任何數據點的值。

group

out 長度相同的向量,其元素指示異常值屬於哪個組。

names

組名稱的向量。

例子

## boxplot on a formula:
boxplot(count ~ spray, data = InsectSprays, col = "lightgray")
# *add* notches (somewhat funny here <--> warning "notches .. outside hinges"):
boxplot(count ~ spray, data = InsectSprays,
        notch = TRUE, add = TRUE, col = "blue")

boxplot(decrease ~ treatment, data = OrchardSprays, col = "bisque",
        log = "y")
## horizontal=TRUE, switching  y <--> x :
boxplot(decrease ~ treatment, data = OrchardSprays, col = "bisque",
        log = "x", horizontal=TRUE)

rb <- boxplot(decrease ~ treatment, data = OrchardSprays, col = "bisque")
title("Comparing boxplot()s and non-robust mean +/- SD")
mn.t <- tapply(OrchardSprays$decrease, OrchardSprays$treatment, mean)
sd.t <- tapply(OrchardSprays$decrease, OrchardSprays$treatment, sd)
xi <- 0.3 + seq(rb$n)
points(xi, mn.t, col = "orange", pch = 18)
arrows(xi, mn.t - sd.t, xi, mn.t + sd.t,
       code = 3, col = "pink", angle = 75, length = .1)

## boxplot on a matrix:
mat <- cbind(Uni05 = (1:100)/21, Norm = rnorm(100),
             `5T` = rt(100, df = 5), Gam2 = rgamma(100, shape = 2))
boxplot(mat) # directly, calling boxplot.matrix()

## boxplot on a data frame:
df. <- as.data.frame(mat)
par(las = 1) # all axis labels horizontal
boxplot(df., main = "boxplot(*, horizontal = TRUE)", horizontal = TRUE)

## Using 'at = ' and adding boxplots -- example idea by Roger Bivand :
boxplot(len ~ dose, data = ToothGrowth,
        boxwex = 0.25, at = 1:3 - 0.2,
        subset = supp == "VC", col = "yellow",
        main = "Guinea Pigs' Tooth Growth",
        xlab = "Vitamin C dose mg",
        ylab = "tooth length",
        xlim = c(0.5, 3.5), ylim = c(0, 35), yaxs = "i")
boxplot(len ~ dose, data = ToothGrowth, add = TRUE,
        boxwex = 0.25, at = 1:3 + 0.2,
        subset = supp == "OJ", col = "orange")
legend(2, 9, c("Ascorbic acid", "Orange juice"),
       fill = c("yellow", "orange"))

## With less effort (slightly different) using factor *interaction*:
boxplot(len ~ dose:supp, data = ToothGrowth,
        boxwex = 0.5, col = c("orange", "yellow"),
        main = "Guinea Pigs' Tooth Growth",
        xlab = "Vitamin C dose mg", ylab = "tooth length",
        sep = ":", lex.order = TRUE, ylim = c(0, 35), yaxs = "i")

## more examples in  help(bxp)

參考

Becker, R. A., Chambers, J. M. and Wilks, A. R. (1988). The New S Language. Wadsworth & Brooks/Cole.

Chambers, J. M., Cleveland, W. S., Kleiner, B. and Tukey, P. A. (1983). Graphical Methods for Data Analysis. Wadsworth & Brooks/Cole.

Murrell, P. (2005). R Graphics. Chapman & Hall/CRC Press.

See also boxplot.stats.

也可以看看

boxplot.stats 用於計算,bxp 用於繪圖和更多示例;和 stripchart 作為替代方案(使用小數據集)。

相關用法


注:本文由純淨天空篩選整理自R-devel大神的英文原創作品 Box Plots。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。