数据准备
本示例数据是自编数据,仅为练习所用,数据结构假设为,两个年份year(2020,2021),两个氮水平nitrogen(N1,N2),两个玉米品种variety(a,b)测定了5个试验指标(变量v1,v2,v3,v4,v5),每个处理3次重复block(1,2,3)。
library(tidyverse) # 调用tidyverse。
df <- read_csv(file = "df.csv") # 导入数据。文档在工作目录下,所以直接给文件名导入。
df # 查看数据。
## # A tibble: 24 × 9
## year nitrogen variety block v1 v2 v3 v4 v5
## <dbl> <chr> <chr> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl>
## 1 2020 N1 a 1 1.26 2.14 0.4 5 3.25
## 2 2020 N1 a 2 1.2 2.9 0.1 5.3 1.27
## 3 2020 N1 a 3 1.3 3 0.3 5.6 2.24
## 4 2020 N1 b 1 1.08 1.72 1.8 2.8 1
## 5 2020 N1 b 2 1.05 1.65 1.7 2.5 3.12
## 6 2020 N1 b 3 1.15 1.35 1.5 3.1 4.57
## 7 2020 N2 a 1 1.32 3.78 1.6 6 5.85
## 8 2020 N2 a 2 1.28 4.32 1.4 6.1 6.48
## 9 2020 N2 a 3 1.35 3.95 1.3 6.2 7.21
## 10 2020 N2 b 1 1.33 3.47 2.8 4.1 6.56
## # … with 14 more rows
7 ggplot2绘图
7.1 认识ggplot2
ggplot2是由Hadley Wickham开发的最流行的R可视化包。
ggplot2中的gg 表示图形语法(Grammar of Graphics),这是一个通过使用“语法”来绘图的图形概念。
7.1.1 构图基本要素
ggplot2语法的10大部件:
- 数据(data)
- 映射(mapping)
- 几何对象(geom)
- 标度(scale)
- 统计变换(stats)
- 坐标系(coord)
- 位置调整(Position adjustments)
- 分面(facet)
- 主题(theme)
- 输出(output)
ggplot2作图必须的3个要件是数据、映射、几何对象。
来认识一下三要素。
数据(Data)
用于绘图的数据,需要是整洁的数据框。如本文中的df数据集。
映射(mapping)
将数据集中的变量数据映射 (关联)到相应的图形属性,也称为"美学映射"或"美学"。
指明了变量与图形所见元素之间的联系,告诉 ggplot图形元素想要关联哪个变量数据。映射函数为aes()。
常用映射:
- x:x轴
- y:y轴
- color:颜色
- size:大小
- shape:形状
- fill:填充
- alpha:透明度
几何对象(Geometric)
每个图形都是采用不同的视觉对象来表达数据,称为几何对象。ggplot2提供了50余种几何对象,几何对象对应的函数命名方式为geom_xxx()。常见几何对象如下。
- geom_point():散点图
- geom_line():折线图
- geom_smooth():光滑 (拟合)曲线
- geom_bar()/geom_col():条形图
- geom_histogram():直方图
- geom_density():概率密度图
- geom_boxplot():箱线图
- geom_abline():参考直线
三个主要部件即可形成图形,其他部件的设置可完成对图的修饰。
Plot = data + Aesthetics + Geometry
7.1.2 图层(layer)
ggplot2基于图层化语法:图形是一层一层的图层叠加而成。实现方式为“+”叠加图层。
绘制一幅散点图来理解图形三要素和图层叠加。
ggplot(df) # 只是创建了一个空的画布。
ggplot(df, aes(x = v1, y = v5)) # aes添加了映射,将v1映射为x轴,将y映射为y轴,但构建的是一个空坐标系。
ggplot(data = df, mapping = aes(x = v1, y = v5)) + geom_point() # 添加几何对象为散点。
这里,数据为df,映射中v1映射给x轴,v5映射给y轴,几何对象为散点图。图形映射和几何对象通过“+”叠加。
参考资料
- R语言编程—基于 tidyverse,张敬信,人民邮电出版社(待出版),2022.
- R语言教程,李东风,https://www.math.pku.edu.cn/teachers/lidf/docs/Rbook/html/_Rbook/index.html
- 《R数据科学》,人民邮电出版社,2018.
- ggplot2高效实用指南,https://www.jianshu.com/p/2dc81b91131e