探索 R 库:ggplot2
介绍
ggplot2是tidyverse集合中的一个包,其唯一目的是创建图形。它是 R 中一个著名的库,基于分层图形语法的概念。图形语法使您能够简明扼要地描述图表的组成部分,分层方法逐层应用这些组成部分,使代码易于阅读和理解。除了构建图形外,它还广泛用于探索性数据分析,因为理解数据集的最佳方法是将其可视化,这使得提取关系变得更加容易。
先决条件
要安装ggplot2包,请运行以下代码片段之一。
#To install the entire tidyverse collection which includes ggplot2
install.packages("tidyverse")
#To install ggplot2 alone
install.packages("ggplot2")
基本组件
ggplot2有几个基本组件:
- ggplot():这将创建一个新的ggplot2对象。
- aes():这创建了美学映射方法,描述数据中的变量如何映射到视觉属性。
- +:这允许您在创建任何图时添加图层。
理解 ggplot2 中的图层
如果我们讨论ggplot2中的层概念,则有四个主要层:
- 数据:用于创建图表的数据或数据集的子集。
- 美学:情节中变量的映射。
- 几何:用于表示数据点的几何函数。
- 主题:情节的不同视觉风格。
让我们看一下基本的图形模板并使用它来创建一些图形。
ggplot(data = <DATA>) +
<GEOM_FUNCTION>(mapping = aes(<MAPPINGS>))
ggplot(data = <DATA>)是第一层。使用 mpg 数据集,它包含在ggplot2库中,加载后即可使用。以下是 mpg 数据集的列。
data(mpg)
colnames(mpg)
"manufacturer" "model" "displ" "year" "cyl" "trans" "drv"
"cty" "hwy" "fl" "class"
让我们在hwy列上创建一个直方图。
#You can ignore theme_classic() function if you want, the resulting plot would be in the default theme.
ggplot(mpg, aes(hwy))+
geom_histogram(binwidth = 5)+
theme_classic()
上面的代码使用了全部四个层。数据和美学包含在ggplot(mpg, aes(hwy))中,然后geom_histogram()函数添加了直方图的几何形状,最后,theme_classic()是可选的。
ggplot2中有不同类型的 geom 函数,可用于不同情况以创建不同的图。geom 是一种使用图来表示数据的几何对象,例如,条形图将使用条形 geom,折线图将使用折线 geom,等等。这反映在 geom 函数的名称中,因为它们的命名方式也与之相符,例如geom_line()、geom_bar()等。
除了主要层之外,ggplot2中还有一些其他有用的功能,例如坐标系、刻面和统计转换,我们将在本指南的其余部分中进行探讨。
刻面
在分面分析中,您可以使用数据集的任何分类列或变量将图拆分为多个子图。如果您想使用一个变量来划分图,请使用 facet_wrap ()函数;如果您想使用两个变量来划分图,请使用facet_grid()函数。
让我们将这两个函数应用到您之前创建的直方图上。
# Saving histogram plot in a variable
a <- ggplot(mpg, aes(hwy))+
geom_histogram(binwidth = 5)+
theme_classic()
# Creating subplots using "cyl" column
a + facet_wrap(~cyl)
如您所见,现在我们有四个子图,每个子图对应cyl列的每个唯一值。
现在来看看facet_grid() 函数。在此函数中,您将使用数据集中的两个分类列。
# You will use 'a' variable storing the histogram again thus reducing code redundancy
a + facet_grid(drv ~ cyl)
坐标系
ggplot2中的默认坐标系是笛卡尔坐标系,其中 x 和 y 位置独立,用于定位数据点。ggplot2 中有不同的坐标系函数可用于不同场合。最著名的是coord_flip()和coor_polar()。
让我们看几个例子来了解coord_flip()和coord_polar()的用法。
# First create a bar chart, try to find yourself the reason for using fill, show.legend, and width arguments
bar <- ggplot(data = mpg) +
geom_bar(
aes(x = manufacturer, fill = manufacturer),
show.legend = FALSE,
width = 1 )
bar
#lets use coord_flip()
bar + coord_flip()
至于coord_polar(),让我们将其应用于相同的条形图以使用极坐标。
bar + coord_polar()
统计变换
如果您查看我们之前创建的条形图,您会发现它显示了其他信息,包括每个制造商的记录数量,但数据集中没有该数量。有些图表显示原始值,而另一些图表则计算新值并将其添加到图中。用于计算图表新值的算法称为统计变换或统计。
可以使用stat_count()函数(而不是geom_bar())来创建条形图。每个 geom 函数都有一个可以覆盖的默认统计数据。请参阅下面的示例。
# Creating a dataset
library(dplyr)
a <- mpg%>%
group_by(manufacturer)%>%
summarise(Count = n())
# Resetting the stat of geom_bar() from count to identity
ggplot(data = a)+
geom_bar(mapping = aes(x = manufacturer, y = Count), stat = "identity")
应用所有图层
在前面的部分中,您学习了使用ggplot2创建图形的基础知识以及方面、坐标系和统计变换。现在让我们使用下面的模板应用所有这些。
ggplot(data = <DATA>) +
<GEOM_FUNCTION>(
mapping = aes(<MAPPINGS>),
stat = <STAT>
) +
<COORDINATE_FUNCTION> +
<FACET_FUNCTION>
保留默认值stat = "count"并仅使用 mpg 数据集。
ggplot(data = mpg)+
geom_bar(mapping = aes(x = manufacturer, fill = manufacturer),
stats = "count", show.legend = FALSE,
width = 1 )+
coord_flip()+
facet_wrap(~year)
结论
本指南介绍了在 R 中使用ggplot2创建图形的基础知识。您还可以将ggplot2用于您自己的数据可视化需求或任何数据分析项目。使用ggplot2创建图形时具有很大的灵活性。每个函数都包含一组参数,可用于相应地调整图形。作为开源开发的一部分,新功能不断添加。本指南将推动您探索ggplot2中的更多内容。
欲了解更多信息,请访问此 repo。
免责声明:本内容来源于第三方作者授权、网友推荐或互联网整理,旨在为广大用户提供学习与参考之用。所有文本和图片版权归原创网站或作者本人所有,其观点并不代表本站立场。如有任何版权侵犯或转载不当之情况,请与我们取得联系,我们将尽快进行相关处理与修改。感谢您的理解与支持!
请先 登录后发表评论 ~