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