R 语言中的箱线图

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)
Creating a Boxplot in R Programming

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")
        )
Change Colors of a Boxplot

移除箱线图的轮廓

在此箱线图示例中,我们使用 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)
Calculating Mean for Boxplot in R Programming and the notch argument

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")
        )
Horizontal Boxplot in R Programming 9

使用 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)的箱线图。

Creating Boxplot using CSV File 10