R - 直方图:初学者的指南
你好,有抱负的数据巫师们!今天,我们将使用R语言开启一段激动人心的直方图之旅。别担心如果你之前从未编写过一行代码——我将作为你友好的向导,我们会一步步地进行。在本教程结束时,你将能够像一个专业人士一样创建美丽的直方图!
什么是直方图?
在我们深入研究R之前,让我们先了解一下什么是直方图。想象你是一名老师(就像我一样!),你想看看你的学生在一次考试中的表现。直方图就像条形图,显示了你的数据的分布。它将你的数据分组到“箱”或范围内,并显示每个箱中有多少数据点。
开始使用R
首先,让我们启动R!如果你还没有安装R,请访问R项目网站并按照操作系统的安装说明进行操作。
一旦安装好并运行R,你将看到一个可以输入命令的控制台。这就是魔法发生的地方!
创建你的第一个直方图
让我们从一个简单的例子开始。我们将创建一些考试成绩的直方图。
# 创建一个成绩向量
scores <- c(65, 70, 80, 85, 90, 95, 75, 80, 85, 90)
# 创建直方图
hist(scores)
当你运行这段代码时,你将看到一个基本的直方图出现。很酷吧?让我们分解一下我们做了什么:
- 我们创建了一个名为
scores
的向量,其中包含一些成绩。 - 我们使用了
hist()
函数来创建这些成绩的直方图。
R自动决定了使用多少箱以及每个箱应该覆盖的范围。但如果我们想要对直方图有更多的控制呢?这正是R的魔法所在!
定制你的直方图
指定箱数
我们可以告诉R我们想要的箱数:
hist(scores, breaks = 5)
这将创建一个有5个箱的直方图。尝试不同的数字,看看它如何改变直方图的外观!
添加标题和标签
让我们使我们的直方图更具信息性:
hist(scores,
main = "成绩分布",
xlab = "分数",
ylab = "频率",
col = "天蓝色",
border = "深蓝色")
每个新参数的作用如下:
-
main
:给直方图添加标题 -
xlab
和ylab
:标签x轴和y轴 -
col
:设置条形的颜色 -
border
:设置条形边框的颜色
调整X轴和Y轴的范围
有时,你可能想专注于特定范围的数据或调整直方图的刻度。让我们看看我们如何做到:
hist(scores,
xlim = c(60, 100), # 设置x轴范围
ylim = c(0, 5), # 设置y轴范围
breaks = seq(60, 100, by = 5)) # 从60到100,每5点创建一个箱
这段代码调整了x轴以显示60到100分的成绩,将y轴设置为最高5,并且每5分创建一个箱。
高级直方图技术
现在你已经掌握了基础知识,让我们探索一些更高级的技术!
添加密度曲线
密度曲线可以帮助可视化数据的分布:
hist(scores,
probability = TRUE, # 显示密度而不是频率
main = "带有密度曲线的成绩分布")
# 添加密度曲线
lines(density(scores), col = "红色", lwd = 2)
这段代码首先创建了一个显示概率密度的直方图,然后在上面添加了一个平滑的密度曲线。
创建多个直方图
如果你想比较分布呢?让我们为两个班级并排创建直方图:
par(mfrow = c(1, 2)) # 为图表设置1x2的网格
# A班成绩
scores_A <- c(65, 70, 80, 85, 90, 95, 75, 80, 85, 90)
hist(scores_A, main = "A班成绩", col = "浅蓝色")
# B班成绩
scores_B <- c(60, 65, 70, 75, 80, 85, 90, 95, 100, 85)
hist(scores_B, main = "B班成绩", col = "浅绿色")
这段代码设置了两个直方图的并排比较,让你轻松比较分布。
有用的直方图函数
这里有一个我们使用过的函数的便捷表格,还有一些你可能发现有用的额外函数:
函数 | 描述 |
---|---|
hist() |
创建基本的直方图 |
breaks |
指定箱数或箱边 |
main |
设置直方图的主标题 |
xlab , ylab
|
标签x轴和y轴 |
col |
设置直方图条形的颜色 |
border |
设置条形边框的颜色 |
xlim , ylim
|
设置x轴和y轴的范围 |
density() |
计算核密度估计 |
lines() |
在现有图表中添加线条 |
par() |
设置或查询图形参数 |
结论
恭喜你!你已经迈出了使用R语言进行数据可视化的第一步。记住,创建有效的可视化既是一门艺术,也是一门科学。不要害怕尝试不同的参数并观察它们如何影响你的直方图。
在你继续R语言的旅程中,你会发现直方图只是数据可视化的冰山一角。但它们是一个很好的起点,你在本章学到的技能将在你探索更高级主题时为你提供良好的服务。
继续练习,保持好奇心,快乐编码!在你意识到之前,你将成为向他人传授R语言和数据可视化奥秘的人。
Credits: Image by storyset