ggplot2学习笔记2:ggplot()语法基础

此博客作为自己的学习笔记,同时与大家交流分享!

Mastering the Grammar

语法这一部分有点难理解,只是看文字描述的概念不易懂,最好是能在画图过程中去理解体会,只有了解了语法,才能掌握ggplot2的精髓,画出的图才能高大上!

下面主要学习ggplot2的理论基础:图形图层语法

建立一个散点图
以ggplot2包中的mpg数据集(记录了美国1999年和2008年部分汽车的制造商、型号、类别、引擎大小、传动系和耗油量等信息)为例

library(ggplot2)
mpg
# A tibble: 234 x 11
   manufacturer model      displ  year   cyl trans      drv     cty   hwy fl    class  
   <chr>        <chr>      <dbl> <int> <int> <chr>      <chr> <int> <int> <chr> <chr>  
 1 audi         a4           1.8  1999     4 auto(l5)   f        18    29 p     compact
 2 audi         a4           1.8  1999     4 manual(m5) f        21    29 p     compact
 3 audi         a4           2    2008     4 manual(m6) f        20    31 p     compact
 4 audi         a4           2    2008     4 auto(av)   f        21    30 p     compact
 5 audi         a4           2.8  1999     6 auto(l5)   f        16    26 p     compact
 6 audi         a4           2.8  1999     6 manual(m5) f        18    26 p     compact
 7 audi         a4           3.1  2008     6 auto(av)   f        18    27 p     compact
 8 audi         a4 quattro   1.8  1999     4 manual(m5) 4        18    26 p     compact
 9 audi         a4 quattro   1.8  1999     4 auto(l5)   4        16    25 p     compact
10 audi         a4 quattro   2    2008     4 manual(m6) 4        20    28 p     compact
# ... with 224 more rows

分别利用qplot()ggplot()画一个以气缸数(cyl)分类的发动机排量(displ)和高速公路每加仑行驶的英里数(hwy)的散点图

qplot(displ, hwy, data = mpg, colour = factor(cyl))  #cyl此时是一个分组变量
ggplot(mpg, aes(displ, hwy, colour = factor(cyl))) + 
  geom_point()  #factor()见ggplot2学习笔记3

ggplot2学习笔记2:ggplot()语法基础_第1张图片

图形属性(aesthetic)和数据映射(mapping)

对于散点图,是每个观测值表示为一个点,根据两个变量的值进行定位。除了水平和垂直位置,每个点还具有大小,颜色和形状。这些属性被称为美学(aesthetics),是能在图形上感知的属性。每个美学可以映射到一个变量,或设置为一个常量值。在上图中,displ 映射到横轴上,hwy 映射到纵轴上,cyl 设置为彩色分类。大小和形状没有映射到变量,但保持其(恒定)默认值。

映射设定好之后,我们可以通过改变函数,画出除了散点图之外的折线图geom_line()、柱形图geom_bar()

#折线图
ggplot(mpg, aes(displ, hwy, colour = factor(cyl))) +
geom_line() +
theme(legend.position = "none")
#柱状图
ggplot(mpg, aes(displ, hwy, colour = factor(cyl))) +
geom_bar(stat = "identity", position = "identity", fill = NA) +
theme(legend.position = "none")

ggplot2学习笔记2:ggplot()语法基础_第2张图片
这些图虽然语法上是正确的,但并没有实际意义

根据语法,有些图很清楚明辨是折线图,柱状图还是散点图,而有一些图并没有确定的名称,如:

ggplot(mpg, aes(displ, hwy, colour = factor(cyl))) +
  geom_point() +
  geom_smooth(method = "lm")  #由于数据根据气缸数进行了分组,拟合直线也进行了分组拟合

ggplot2学习笔记2:ggplot()语法基础_第3张图片

图层的语法组件(Components of the Layered Grammar)

图层(layers)

  1. 数据:必须是一个数据框(data frame)
  2. 图形映射属性
  3. 统计变换
  4. 几何对象
  5. 位置调整方式

标度(Scaling)

简单地说,标度就是一种映射关系,如坐标轴的位置标度和图例中的颜色、形状等等。
ggplot2学习笔记2:ggplot()语法基础_第4张图片

坐标系(Coordinate System)

坐标系(简称coord)是指数据映射所在的图表平面,位置通常由两个坐标(x, y)决定。

坐标系的不同类型如下图:

ggplot2学习笔记2:ggplot()语法基础_第5张图片
从左到右依次是笛卡尔坐标系半对数坐标系极坐标系
还有很多其他坐标系

分面 (Facetting)

见后续…

往期笔记

  • ggplot2学习笔记1:从qplot()开始

参考资料

  • 书籍:《ggplot2:数据分析与图形艺术》
  • Hadley Wickham(2016). ggplot2. Springer International Publishing. doi:10.1007/978-3-319-24277-4

你可能感兴趣的:(R语言可视化)