R 语言中的箱线图(boxplot)是一种通过图形化方式可视化特定数据分组的数值数据的便捷方法。让我们来看看如何在此编程语言中创建、移除异常值、设置颜色、添加名称、添加均值以及绘制水平箱线图,并提供示例。
R 箱线图语法
在此编程中绘制箱线图的语法是:
boxplot(formula, data = NULL,.., subset, na.action = NULL)
此箱线图函数背后的复杂语法包含以下参数:
(x, ....., range = 1.5, width = NULL, varwidth = FALSE,
notch = FALSE, outline = TRUE, col = NULL, log = "",
border = par("fg"), names, plot = TRUE,
pars = list(boxwex = 0.8, staplewex = 0.5, outwex = 0.5),
horizontal = FALSE, add = FALSE, at = TRUE)
R 语言箱线图支持许多参数,以下是一些:
- data:请指定要用于绘制箱线图的数据所在的数据框(Data Frame)或列表。在本例中,它是 airquality。
- subset:您可以通过指定一个值向量来限制绘图。在本例中,您可以将其限制为八月份。
- x:请指定您想从中绘制箱线图的数据。这里,您可以使用数值向量或包含数值向量的列表。
- range:此编程的箱线图参数决定了须(whisker)延伸出箱体(box)的距离。
- width:这是可选参数,用于指定一个包含每个箱体宽度的向量。
- varwidth:这是一个布尔参数。如果为 TRUE,则箱体的宽度将与组中观测值的数量的平方根成比例绘制。
- border:这是一个可选参数。请指定您想添加到箱线图边框轮廓的颜色向量。
- plot:这是一个布尔参数。如果为 FALSE,它将返回 R 箱线图所基于的统计摘要。
- log:您需要指定一个包含三个选项的字符串。如果 X 轴需要对数化,则为“x”;如果 Y 轴需要对数化,则为“y”;如果 X 轴和 Y 轴都需要对数化,则指定“xy”或“yx”。
- add:这是一个布尔参数,默认为 FALSE。如果为 TRUE,则绘图将被添加到已有的绘图中。
- horizontal:这是一个布尔参数。如果为 FALSE,则箱线图垂直绘制;如果为 TRUE,则水平绘制。
- at:这是一个数值向量,指定绘制箱线图的位置。当我们向现有绘图区域添加新箱线图时,这非常有用。
在开始示例之前,让我们先看一下本编程语言提供的 airquality 数据集,我们将使用它来创建此箱线图示例。
R 语言箱线图的返回值
总的来说,在我们开始创建之前,让我们看看数据是如何划分的。它返回统计数据(stats)、异常值(outliers)、分组(groups)和名称(names)。
airquality return.value <- boxplot(airquality$Wind) return.value
> return.value <- boxplot(airquality$Wind)
> return.value
$stats
[,1]
[1,] 1.7
[2,] 7.4
[3,] 9.7
[4,] 11.5
[5,] 16.6
$n
[1] 153
$conf
[,1]
[1,] 9.176285
[2,] 10.223715
$out
[1] 20.1 18.4 20.7
$group
[1] 1 1 1
$names
[1] "1"
在 R 语言中创建箱线图
在本例中,我们使用 R Studio 提供的 airquality 数据集来创建箱线图。如果您需要从外部文件导入数据,请参阅 R 读取 CSV 文章以了解 CSV 文件的导入。
airquality boxplot(airquality$Wind)

airquality 数据集返回输出为一个列表。因此,我们使用 $ 从列表中提取数据。
boxplot(airquality$Wind)
使用公式参数创建箱线图
在本例中,我们使用公式参数在此编程中创建箱线图。
- formula:它应该类似于 value~group,其中 value 是数值向量,group 是您想用作分组依据的列。例如,如果您想为全国销售额绘制样本量箱线图,则 value = sales,group = country。
airquality boxplot(airquality$Wind~airquality$Month)
为箱线图分配名称
在本例中,我们使用 main、xlab 和 ylab 为 R 箱线图、X 轴和 Y 轴分配名称。
- main:您可以更改或提供标题。
- xlab:请指定 X 轴的标签。
- ylab:请指定Y轴的标签。
- las:用于更改 Y 轴值的方向。
airquality
boxplot(airquality$Wind~airquality$Month,
main = "Airquality",
xlab = "Months",
ylab = "Wind",
las = 1
)
更改箱线图的颜色
在本例中,我们使用 col 参数更改箱线图框的颜色。
- col:请指定您想使用的颜色。在控制台中输入 colors() 以获取可用颜色的列表。
- names:请指定箱体的名称。在这里,我们将月份数字更改为月份名称。
# Changing Colors, Assigning new Names
airquality
boxplot(airquality$Wind~airquality$Month,
main = "Airquality",
xlab = "Months",
ylab = "Wind",
las = 1,
col = c("violetred", "steelblue1", "salmon1",
"palegoldenrod", "olivedrab"),
names = c("May", "June", "July", "August", "September")
)

移除箱线图的轮廓
在此箱线图示例中,我们使用 outline 参数移除轮廓。
- outline:这是一个布尔参数。如果为 TRUE,它会绘制轮廓(即箱体外部的额外点);如果为 FALSE,则所有轮廓都被移除。
boxplot(airquality$Wind~airquality$Month,
outline = FALSE,
main = "Airquality",
xlab = "Months",
ylab = "Wind",
las = 1,
col = c("violetred", "steelblue1", "salmon1",
"palegoldenrod", "olivedrab"),
names = c("May", "June", "July",
"August", "September")
)
在 R 中计算并添加均值到箱线图
在本例中,我们计算每个箱体的均值,并展示如何使用 points 函数将这些均值添加到现有的箱线图中。
boxplot(airquality$Wind~airquality$Month,
main = "Airquality",
xlab = "Months",
ylab = "Wind",
las = 1,
col = c("violetred", "steelblue1", "salmon1",
"palegoldenrod", "olivedrab"),
names = c("May", "June", "July",
"August", "September")
)
meanval <- by(airquality$Wind, airquality$Month, mean)
points(meanval, col = "white", pch = 8, cex = 1.5)
以下语句按月份对 Wind 进行分组,找出其均值。
meanval <- by(airquality$Wind, airquality$Month, mean)
以下语句将这些均值添加到箱体中。pch = 8 表示星形字符,cex 是字符大小,col 是颜色。
points(meanval, col = "white", pch = 8, cex = 1.5)
箱线图中的 Notch 参数
在本例中,我们使用 notch 参数在箱体的每一侧绘制一条线。
- notch:这是一个布尔参数。如果为 TRUE,则在箱体的每一侧绘制一个缺口(notch)。如果两个图的缺口重叠,则可以说它们的其中位数相同;否则,它们是不同的。
# Notch
airquality
boxplot(airquality$Wind~airquality$Month,
outline= FALSE,
notch = TRUE,
main = "Airquality",
xlab = "Months",
ylab = "Wind",
las = 1,
col = c("violetred", "steelblue1", "salmon1",
"palegoldenrod", "olivedrab"),
names = c("May", "June", "July",
"August", "September")
)
meanval <- by(airquality$Wind, airquality$Month, mean)
points(meanval, col = "white", pch = 8, cex = 1.5)

R 语言中的水平箱线图
在本例中,我们使用 horizontal 参数将默认的垂直箱线图更改为水平箱线图。
airquality
boxplot(airquality$Wind~airquality$Month,
notch = TRUE,
horizontal = TRUE,
main = "Airquality",
xlab = "Months",
ylab = "Wind",
las = 1,
col = c("violetred", "steelblue1", "salmon1",
"palegoldenrod", "olivedrab"),
names = c("May", "June", "July",
"August", "September")
)

使用 CSV 文件创建箱线图
让我们看看如何使用外部数据创建箱线图。为此,我们将使用 read.csv 函数从 CSV 文件导入数据。有关导入 CSV 文件的信息,请参阅“读取 CSV”文章。
employee <- read.csv("Products.csv", TRUE, sep = ",",
na.strings = TRUE)
boxplot(employee$SalesAmount~employee$EnglishCountryRegionName,
main = "Products",
col = c("steelblue", "tomato3", "yellow2",
"orange4", "lawngreen", "skyblue4")
)
上面的代码片段将绘制按国家(Country)分组的销售额(Sales Amount)的箱线图。
