本文概述
在以前的博客文章中, 你学习了如何使用hist()函数制作直方图。你还可以使用由Hadley Wickham创建的ggplot2(基于图形语法的R绘图系统)制作直方图。这篇文章将重点介绍使用ggplot2制作直方图。
步骤
检查是否已安装ggplot2
数据
使用ggplot2制作直方图
更进一步
调整qplot()
- 垃圾箱
- 名称/颜色
- X和Y轴
调整ggplot()
- 垃圾箱
- 名称/颜色
- X和Y轴
- 额外:趋势线
感觉像走远了吗?
(想了解如何使用ggplot2做更多的绘图吗?尝试使用gglot2进行数据可视化的交互式课程。)
步骤1。检查是否已安装ggplot2
首先, 转到RStudio中的”程序包”选项卡, RStudio是一个可与R有效配合使用的IDE, 搜索ggplot2并标记该复选框。或者, 可能是你需要安装软件包。在这种情况下, 你将停留在同一选项卡中, 然后单击”安装”。输入ggplot2, 按Enter, 然后等待一或两分钟, 以安装软件包。
你也可以使用install.packages()函数从控制台安装ggplot2:
install.packages("ggplot2")
要有效地加载ggplot2软件包, 请执行以下命令:
library(ggplot2)
第二步。数据
让我们离开ggplot2库, 稍作保留, 并确保你可以使用一些数据集:导入必要的文件或使用R中内置的文件。本教程将再次使用chol数据集。
如果你只是要学习本教程系列, 则可以从此处下载数据集。
你可以通过使用read.table()函数中嵌入的url()函数加载chol数据集。接下来, 你可以使用head(), summary()和str()之类的功能检查导入是否成功:
请注意, 你使用head()函数检索chol data.frame的第一部分, 而使用summary()返回chol对象的摘要。最后, 你可以使用str()显示chol数据框的结构。
提示:如果要仔细检查chol数据框的类, 请使用class()函数, 就像该class(chol)一样。
第三步使用ggplot2制作直方图
你有两个选择可以使用ggplot2包创建直方图。一方面, 你可以使用qplot()函数, 该函数看起来非常类似于hist()函数:
你会看到, 使用带有qplot()函数的plot很容易:在x轴上传递想要的数据, 在这种情况下为chol $ AGE, 并通过添加geom参数, 可以指定你想要的图形类型。在这种情况下, 通过指定”直方图”, 你指示要绘制chol $ AGE的分布。
另一方面, 你也可以使用ggplot()函数制作相同的直方图。在这种情况下, 你可以获取数据集chol并将其传递给data参数。接下来, 将数据集中的AGE列作为x轴上的值传递, 并计算其直方图:
如你先前所见, ggplot2是图形语法的实现, 这意味着生成图形有一个基本语法:你需要数据和图形元素来制作图形, 就像你需要一个人称代词和一个共轭动词一样。造句。这意味着你将数据作为x和y元素输入到绘图中, 并且需要操纵一些细节(例如颜色, 标记等)作为图形元素, 并作为图层添加。
这正是此图中发生的情况:除了你指定的data参数之外, 你还添加了aes来描述如何将数据中的变量(例如chol $ AGE)映射到几何的视觉属性(在这种情况下, geom_histogram(), 将其添加为一层)。
但是这两种选择之间有什么区别?
qplot()函数应该与ggplot()生成相同的图形, 但是语法更简单。这看似完全是随机的, 但如果你了解qplot()名称的来源, 那实际上就不是。它是”快速绘图”的简称, 它是一种捷径, 旨在让你习惯于习惯plot()。尽管ggplot()可以提供最大的功能和灵活性, 但qplot()是ggplot的更直接但可定制性较低的包装器。
注意:实际上, 更经常使用ggplot()。
第四步。更进一步
现在, 你知道如何使用基于图形语法的R包制作基本的直方图, 是时候开始解决了, 调整刚刚定制的qplot()和ggplot()满足你的需求。
调整qplot()
通过qplot()调整直方图的选项不是太广泛, 但是此功能确实允许你更改基础知识以改善可视化效果, 从而更好地理解直方图。你需要做的就是添加更多参数, 就像使用hist()函数一样。
你可能已经在使用” bins = 30″的先前直方图中” stat_bin()”中看到了以下警告。使用” binwidth”选择更好的值。;警告是指可以添加到qplot( )和ggplot()函数来更改直方图块的宽度。
无论如何, 你都可以将原始图调整为如下所示:
提示:将参数与本教程系列第一部分中hist()函数中使用的参数进行比较, 以获取更多信息!
你将在chol数据集中的AGE列有一个直方图, 标题为Age的直方图, 标签为x轴(年龄), 宽度为5的bin在x轴上的值介于20到50之间并具有透明的蓝色填充和红色边框。
由于R命令越来越长, 因此你可能需要一些帮助来了解代码的各个部分对直方图的外观有何影响。
让我们将其分解为较小的部分:
垃圾箱
你可以通过在qplot()函数中指定binwidth参数来更改binwidth。在下面的srcmini Light块中玩binwidth:
名称/颜色
与hist()函数一样, 你可以使用main参数来更改直方图的标题:
要更改引用x轴和y轴的标签, 请使用xlab和ylab, 就像使用hist()函数时一样。
但是, 如果要调整直方图的颜色, 则必须采用与hist()函数稍有不同的方法:
如果你想更改垃圾箱的边界, 这种不同的方法也很重要。使用I()函数添加col参数, 可以在其中嵌套颜色:
I()函数禁止解释其参数。在这种情况下, col参数将受到影响。没有它, qplot()函数将打印图例, 说” col =” red”, 这在这种情况下绝对不是你想要的(Muenchen et al。2010)。
提示:尝试删除I()函数, 然后自己看看会发生什么!
如果要设置垃圾箱填充的透明度, 只需添加参数alpha以及介于0(完全透明)和1(不透明)之间的值即可。在下面的代码中, 将alpha设置为0.2:
注意这里也使用了I()函数!同样, 尝试不使用此功能, 看看它对直方图有什么影响。
X和Y轴
qplot()函数还允许你设置出现在x轴和y轴上的值的限制。只需使用xlim和ylim, 就如同本教程第一部分有关直方图的hist()函数所描述的一样。添加xlim参数和一些合理的参数后, 你将在本节开始时得到直方图:
提示:不要忘记使用c()函数指定xlim和ylim!
调整ggplot()
就像到目前为止已经讨论过的其他两个选项一样, 通过ggplot()函数调整直方图也非常容易。总体信息保持不变:只需在原始代码中添加更多代码即可绘制你的(基本)直方图!
这样, 你可以自定义基本的ggplot!
在下面的练习中, 你将再次使用chol数据制作直方图。更具体地说, 你将沿x轴绘制chol $ AGE数据。之后, 你将使用geom_histogram()函数告诉ggplot2你实际上对借助直方图绘制chol $ AGE的分布感兴趣。最后, 你可以通过添加labs()来自定义ggplot, 向其传递标题, 添加标签的x和y参数以及设置x和y轴限制的xlim()和ylim()。
在下面的互动练习中尝试一下:
再一次, 让我们将这段庞大的代码分成几部分, 以确切地了解每个部分对直方图的可视化有何贡献:
垃圾箱
要调整bin宽度和断点, 由于自变量的工作原理相同, 因此你基本上可以遵循本教程第一部分有关直方图的常规准则。这意味着你可以添加中断以更改垃圾箱宽度:
注意, seq()函数可以将by参数名称显式指定为最后一个参数。这可以提供更多信息, 但不会改变结果直方图!
请记住, 你还可以使用c()函数对bin表示相同的约束, 但这会使你的代码混乱。
名称/颜色
要调整直方图的颜色, 只需添加参数col和fill以及所需的颜色:
alpha参数控制填充透明度。请记住在0(透明)和1(不透明)之间传递一个值:
你还可以通过传递..count ..来根据y轴上显示的计数值用颜色填充垃圾箱, 这在qplot()函数中是不可能的:
将geom_histogram()中的aes()的fill参数设置为..count ..会产生多种蓝色, 这实际上是默认的配色方案。如果要更改此设置, 则应在代码中添加更多内容:scale_fill_gradient(), 它允许你指定, 例如:
- 你是从y轴获取计数值,
- 低值应为绿色,
- 较高的值应以红色显示:
请记住, 调整直方图的最终目的应该始终是改善对直方图的理解;尽管上面的直方图看起来很花哨, 但它们可能并不是你所需要的。因此, 请始终牢记你要实现的目标!
请注意, 还有其他几个选项可以调整直方图的颜色。如果你想进行更多尝试, 可以在ggplot文档页面的” Scales”部分中找到其他参数。
要调整直方图的标题, 请添加参数标题:
要调整直方图的x轴和y轴上的标签, 请添加参数x和y, 后跟你选择的字符串:
X轴和Y轴
与hist()函数用于调整x和y轴的参数类似, 可以使用xlim()和ylim()。如果添加这两个函数, 则从本节的开头将得到直方图:
提示:使用参数xlim和ylim时, 请不要忘记使用c()函数!而且你可能也应该注意那些括号:)
额外:趋势线
你可以通过在代码中添加geom_density来轻松地向趋势图添加趋势线:
请记住:就像使用hist()函数一样, 使用ggplot2的直方图也需要绘制密度才能起作用。还请记住, hist()函数要求你通过输入两个单独的命令来绘制趋势线, 而ggplot2则允许你在一个命令中完成所有操作。
第五步。感觉像走远了吗?
如果你对ggplot2可以制作的直方图感兴趣, 并且想发现该包还可以做些什么, 可以在RDocumentation页面上阅读有关它的信息。对于任何有兴趣将ggplot2提升到新水平的人来说, 这都是一个很好的起点。
如果你已经对SAS, SPSS和STATA有一定的了解, 并且希望发现更多关于ggplot2以及其他有用的R包的信息。你可能要查看srcmini的课程”面向SAS, SPSS和STATA用户的R”。该课程由Bob Muenchen教授, Bob Muenchen被认为是R社区中的杰出人物之一, 并且在本教程中对此书进行了简要提及。
这是3个使用R创建直方图的文章中的第二篇。下一篇文章将介绍使用ggvis创建直方图。
评论前必须登录!
注册