R - 盒形图:初学者的数据分布可视化指南

你好,未来的数据巫师们!今天,我们将使用R语言开启一段激动人心的盒形图之旅。如果你之前从未编写过代码,不用担心——我会成为你的友好向导,我们将一步步地进行。在本教程结束时,你将能够像一个专业人士一样创建出美丽的盒形图!

R - Boxplots

盒形图是什么?

在我们深入代码之前,让我们了解一下盒形图是什么。想象你正在尝试总结班级中所有学生的身高。盒形图就像一个巧妙的小盒子,让你一眼就能看到数据的分布。它是观察数据的中位数、四分位数以及任何异常值的绝佳方式。

创建你的第一个盒形图

设置你的R环境

首先,确保我们已经准备好R环境。如果你还没有安装R,请前往R的官方网站,并按照操作系统的安装说明进行安装。

一旦安装了R,打开你的R控制台或如果你使用的是RStudio,那么打开RStudio。我们现在准备创建一些盒形图!

盒形图的基本语法

在R中创建盒形图的基本语法出奇地简单。它的样子如下:

boxplot(data)

让我们用一些真实的数据来尝试一下。我们将使用内置的mtcars数据集,它包含了各种汽车模型的信息。

# 创建一个基本的汽车里程数的盒形图
boxplot(mtcars$mpg)

当你运行这段代码时,你会看到一个盒形图出现。让我们分解一下你所看到的:

  • 盒子中间的粗黑线是中位数。
  • 盒子底部的位置代表第一四分位数(25%的数据低于这个点)。
  • 盒子顶部的位置代表第三四分位数(75%的数据低于这个点)。
  • 胡须(从盒子延伸出的线)显示数据的范围。
  • 任何超出胡须的点都被认为是异常值。

添加一些颜色和标签

现在,让我们使我们的盒形图更具信息性和视觉吸引力:

# 创建一个更详细的盒形图
boxplot(mtcars$mpg,
main="汽车里程分布",
ylab="每加仑英里数",
col="浅蓝色",
border="深蓝色")

在这个例子中:

  • main 给我们的图表添加了一个标题。
  • ylab 为y轴添加了标签。
  • col 用浅蓝色填充了盒子。
  • border 使盒子的轮廓为深蓝色。

比较多个组

盒形图的一个优点是能够并排比较不同的组。让我们比较不同气缸数的汽车的里程数:

# 比较不同气缸数的里程数
boxplot(mpg ~ cyl, data=mtcars,
main="汽车里程数按气缸数",
xlab="气缸数",
ylab="每加仑英里数",
col=c("浅绿色", "浅蓝色", "粉红色"))

在这里,我们使用了公式表示法mpg ~ cyl,告诉R为cyl中的每个唯一值创建mpg的盒形图。我们还为每个组添加了不同的颜色。

带有缺口的盒形图

掌握了基础知识后,让我们通过添加缺口来为我们的盒形图增添一点 sophistication。

缺口是什么?

缺口是盒子侧面的一个小凹痕。它不仅仅是为了美观——它实际上帮助我们比较组间的中位数。如果两个盒子的缺口不重叠,那么这是一个强有力的证据,表明它们的中位数是不同的。

创建带缺口的盒形图

让我们修改之前的例子来包含缺口:

# 创建带缺口的盒形图
boxplot(mpg ~ cyl, data=mtcars,
main="汽车里程数按气缸数",
xlab="气缸数",
ylab="每加仑英里数",
col=c("浅绿色", "浅蓝色", "粉红色"),
notch=TRUE)

这里唯一的新参数是notch=TRUE。这个简单的添加给了我们那些信息丰富的缺口。

解释带缺口的盒形图

仔细观察缺口。如果两个盒子的缺口不重叠,我们可以确信这些组的真实中位数(中间值)是不同的。这是一种快速可视化的方法,可以发现组之间的显著差异!

定制你的盒形图

现在你已经掌握了基础知识,让我们看看如何使你的盒形图更具信息性和视觉吸引力。

添加个体数据点

有时,看到实际的盒形图旁边的数据点是有帮助的。我们可以使用jitter函数来实现:

# 带有个体点的盒形图
boxplot(mpg ~ cyl, data=mtcars,
main="汽车里程数按气缸数",
xlab="气缸数",
ylab="每加仑英里数",
col=c("浅绿色", "浅蓝色", "粉红色"),
notch=TRUE)

# 添加抖动点
stripchart(mpg ~ cyl, data=mtcars,
method="jitter",
vertical=TRUE,
add=TRUE,
pch=20,
col="深灰色")

这段代码首先创建了一个盒形图,然后在上面叠加了个体数据点。pch=20参数使点变成小圆圈,col="深灰色"将它们染成深灰色。

改变异常值的外观

默认情况下,盒形图中的异常值显示为简单的点。我们可以改变它们的外观:

# 定制异常值外观
boxplot(mpg ~ cyl, data=mtcars,
main="汽车里程数按气缸数",
xlab="气缸数",
ylab="每加仑英里数",
col=c("浅绿色", "浅蓝色", "粉红色"),
notch=TRUE,
outpch=8,  # 星形异常值点
outcol="红色")  # 红色异常值

在这里,outpch=8将异常值点改为星形,outcol="红色"将它们染成红色。

结论

恭喜你!你已经学会了如何在R中创建和定制盒形图。从基本的图表到带缺口的比较,甚至添加个体数据点,你现在拥有了一个强大的数据可视化工具。

记住,掌握盒形图(和R语言)的关键是练习。尝试使用不同的数据集创建盒形图,尝试不同的颜色和样式,最重要的是,享受其中的乐趣!

以下是我们在盒形图中涵盖的参数的快速参考表:

参数 描述 示例
main 图表的主标题 main="我的盒形图"
xlab x轴的标签 xlab="组别"
ylab y轴的标签 ylab="值"
col 盒子的填充颜色 col="浅蓝色"
border 盒子边框的颜色 border="深蓝色"
notch 向盒子添加缺口 notch=TRUE
outpch 异常值点的形状 outpch=8
outcol 异常值点的颜色 outcol="红色"

快乐绘图,愿你的数据总是被优雅地装箱!

Credits: Image by storyset