当前位置: 首页>>代码示例 >>用法及示例精选 >>正文


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。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。