03 ggplot2三部曲之基础二

  • Date : 2021-11-25_Thu

  • 微信公众号 : 北野茶缸子

  • Tags : #R/R可视化 #R/R数据科学 #R/index/01

  • 参考:

开始前

image.png 主要为ggplot2 中的后四个部分的内容。

geometries 几何对象

不同的几何对象

image.png

几何对象的叠加

几何对象的本质,也就是画面上的不同图层。当我们通过 ggplot(data=example) 后,便相当于设定了默认的ggplot2 设定的背景图层,接着依靠 +geom_point() , +geom_bar() 等等,便可以实现图层的添加。

也正因其代表不同的图层,因此也可以利用新的图层对旧的图层进行叠加(或覆盖)。 image.png

先后顺序

但也正和图层的叠加一样,R中ggplot 的叠加也有先后顺序,后来的图层会覆盖在原来的图层上。

image.png
image.png

全局与局部映射

我们可以设定整个图像中图层的参数,依靠设置 ggplot ,也可以对不同的图层进行局部设定 geom_xxx() ,这样也就实现了局部和全局的映射设置。 image.png

映射冲突

如果全局映射与局部映射发生冲突,则以局部映射为准。

image.png

statistics 统计变换

对应几何图形

几何图形函数一般都会对应一个统计变换函数的图形。 image.png 因此某种程度来说,统计变换对应的函数和几何对象对应的函数差别不大。

geom_bar 相当于默认的帮助我们以cut 列作为统计对象,对diamonds 表格进行频数计算。 对此我们可以使用 table 并转换为 dataframe 自行实现。

相关参数

stat

当需要对直方图自定义x,y 时,需要设定参数 stat ,其默认参数为 count (也正因此geom_bar 对应stat_count),它会计算出选择的对象在出现的频数作为y。因此若我们希望自定义y,需要将其改为 identity 。否则会报错。

..prop..

若希望显示出的不是频数,而是频率,则可以通过为y 赋值,将直方图计算出的统计结果重新映射给比例 ..prop..

position 位置调整

一般的位置调整问题存在于散点图或直方图中,指的是变量经过ggplot 转换而成的图形所进行的位置调整。

散点图

jitter

通过为本来重叠在同一位置的点添加随机的“抖动”,使重叠的点产生错位,也因此能够完全地显示在图像里。 image.png

柱状图

dodge

可以让组中的直方图并列显示。(适合组间或组内参数的比较)

image.png

stack

默认的直方图其位置参数即为 stack 。图形堆叠在一起。(适合整体的比较)

image.png

fill

stack 类似,只不过显示的是各部分占其整体的比重。(无法比较各组之间大小差异)

image.png

coordinate 坐标系

翻转坐标系

极坐标系

image.png

theme 主题

通过theme 可以改变绘图图形本来的一些样式,属于非常细节的部分。通常来说,theme 可以定义一些非数据的绘图元素,包括:

我们可以使用ggplot 内建的theme。

image.png 我们还可以直接定义theme 中的参数,如通过rel函数将字体大小提升到1.5倍:

labs

labs 可以对ggplot2 绘图中的标签进行修改。

在使用labs 属性定义图像时,还可以使用expression 语句,生成绘图中的希腊字母、特殊符号或公式,但该包的语法比较奇怪,比如:

image.png
image.png

自定义主题

如果我们想保留某类主题作为模版,这样就不用在绘制新图时反复调用它了:

另外,如果希望主题在全局生效,可以直接使用函数:

完整绘图模版

image.png

易错点

  1. 局部映射与全局映射冲突时,以局部映射为准。

  2. 图层存在先后顺序,后来的图层越靠近顶层。

  3. ggplot2 无法借助循环直接批量将绘图映射在同一层面上,可以借助列表先存储这些绘图,再使用拼图函数将它们拼接在同一画面上。

练习题

6-2

6-3

image.png

Last updated