文章目录
前言
在R语言里,谈及绘图,ggplot2是最出名的绘图包之一,作为一个绘图神器,它提供了许许多多的功能给用户使用,仅用短短几行代码,一幅幅高端大气的图像便跃然纸上,这可能就是ggplot2包的魅力所在。
我刚开始学习ggplot2的时候只用于学术上的制图,对深层的制图一知半解,趁着有空便重新学习了一下ggplot2包,才发现其背后的制图逻辑竟跟GIS的图层叠加有着高度的相似,下面就是我学到的内容了。
数据集介绍
这次使用的数据集是R包内置的iris数据集,是由Edgar Anderson记录的3种鸢尾花形态数据。
iris以鸢尾花的特征作为数据来源,常用在分类操作中。该数据集由3种不同类型的鸢尾花的各50个样本数据构成。其中的一个种类与另外两个种类是线性可分离的,后两个种类是非线性可分离的。
该数据集包含了4个属性:
Sepal.Length(花萼长度),单位是cm;
Sepal.Width(花萼宽度),单位是cm;
Petal.Length(花瓣长度),单位是cm;
Petal.Width(花瓣宽度),单位是cm;
Species(种类):Iris Setosa(山鸢尾)、Iris Versicolour(杂色鸢尾),以及Iris Virginica(维吉尼亚鸢尾)。

polt与ggplot对比
我们用相同的数据,通过plot函数跟ggplot函数分别绘制散点图来简单理解一下两者的差异:
library("ggplot2") #加载安装好的ggplot2包
plot(iris$Sepal.Length, iris$Sepal.Width) #plot绘图
ggplot(data = iris,aes(x = Sepal.Length, #ggplot2绘图
y=Sepal.Width))+ #绘制底层画布
geom_point(color = "darkred") #在画布上添加点

上图为plot函数散点图,下图为ggplot函数散点图
从上述代码可以看出,ggplot绘图有以下两个特点:
- 有明确的开始(以ggplot函数开始)与终止(一条语句一幅画)
- ggplot2语句可以理解成一条语句一幅画,然后通过图层叠加,叠加通过“+”号将绘图的语句连接起来。
ggplot2绘图
绘制画布
上面介绍的ggplot2绘图有明确的开始,即以ggplot函数作为开始的标志,那么ggplot()有什么用呢?
它的主要功能在于初始化一个ggplot对象,且不指定绘图内容,格式如下:
ggplot(data = NULL, mapping = aes(), ...,environment = parent.frame())
其中,data指的要绘图的数据集,它会被制定为绘图环境,载入之后就不需要写大量的$符号来提取data.frame里面的向量的操作。如果数据都是向量,那么也可不指定,但要在声明中标注data=NULL,否则会有不必要的报错。
数据与图形属性之间的映射关系称mapping。
ggplot对象的data存储了整个属性框的内容,而mapping则确定如何使用这些数据。图形的可视属性包括如形状、颜色、透明度等美学属性,确定美学属性与数据之间的对应关系一般用aes函数。常见的图形属性包括x、y、size、color、group.
比如,当data=iris时,mapping= aes(x = Sepal.Length, y = Sepal.Width)表示将花萼长度作为x轴变量,将花萼宽度作为y轴变量。如果需要将Species映射到形状或者颜色属性,可以添加shape=Species或者colour = Species. 使用ggplot函数绘制底层画布。
ggplot(data = iris, aes(x = Sepal.Length,
y = Sepal.Width,
colour = Species,
shape = Species))

除了

本文深入介绍了R语言中ggplot2包的使用,包括数据初始化、几何对象、统计变换、标尺设置、坐标系转换和分面等功能。通过对比plot函数,展示了ggplot2在图形绘制的灵活性和层次感。以iris数据集为例,详细解释了如何创建散点图、条形图,并探讨了分面网格(facet_grid)和包裹(facet_wrap)的用法,最后讨论了如何保存图形。文章旨在揭示ggplot2的强大绘图逻辑,帮助读者更好地理解和运用这一工具。
最低0.47元/天 解锁文章
901

被折叠的 条评论
为什么被折叠?



