ggplot2学习笔记7:通过图层逐层构建图形

Build a Plot Layer by Layer



5.1 介绍(Introduction)

ggplot2背后的一个关键思想是,它允许轻松地迭代,一次一层地构建一个复杂的绘图。每个图层可以来自不同的数据集,并且具有不同的美学映射,从而可以创建复杂的绘图,显示来自多个源的数据。

在本章中,将深入了解层的细节,以及如何控制所有五个组件:数据Data、美学映射Aesthetic Mappings、几何对象Geom、统计变换Stat和位置调整Position Adjustments


5.2 创建一张图形(Building a Plot)

我们要明确,在绘图过程实际上是有两个步骤。以mpg数据集为例,第一步,我们使用默认数据集和美学映射创建一个图:

p <- ggplot(mpg, aes(displ, hwy))
p

此时我们已经创建好了一幅图,表面上是一块画板,实际上这幅图中包含了mpg数据集中的所有数据和坐标轴信息,唯一缺的就是数据的可视化形式。

下面是第二步,通过几何对象添加图层:

p + geom_point()

几何对象point,通过函数geom_point()添加,()中没有任何参数,代表使用默认值。使用函数geom_point()是捷径,实际上,在后台它调用该layer()函数以创建一个新层:

p + layer(
  mapping = NULL, 
  data = NULL,
  geom = "point", 
  stat = "identity",
  position = "identity"
)

layer()函数调用完全指定了该层的五个组成部分:

  • mapping:映射,就是aes()函数,通常省略,NULL就是指默认的ggplot()函数中的映射
  • data:数据,覆盖默认数据集,通常省略,NULL就是默认取ggplot()中的数据集
  • geom:几何对象,包含很多美学参数,例如颜色等,在这里设置不会成为标度。
  • stat:统计变换,执行一些统计汇总,默认设置为"identity"时保持不变。这个参数在直方图和平滑曲线图中应用较多。geomstat设置一个即可,每个geom都有一个默认stat,每个stat默认一个geom
  • position:位置,调整遮盖、堆叠的情况

5.3 数据(Data)

ggplot2的作用只是将数据框可视化。在使用之前应该提前整理你的数据框,使其整齐、易于操作.

You’ll learn about tidy data in Chap. 9, but for now, all you need to know is that a tidy data frame has variables in the columns and observations in the rows.(列变量行观测)

library(ggplot2)
library(dplyr)  #包含data_frame()函数
mpg  #在包ggplot2中
    
mod <- loess(hwy ~ displ, data = mpg)  #loess()生成线性模型
grid <- data_frame(displ = seq(min(mpg$displ), max(mpg$displ), length = 50))
grid$hwy <- predict(mod, newdata = grid)
grid
#> Source: local data frame [50 x 2]
#>
#> displ hwy
#> (dbl) (dbl)
#> 1 1.60 33.1
#> 2 1.71 32.2
#> 3 1.82 31.3
#> 4 1.93 30.4
#> 5 2.04 29.6
#> 6 2.15 28.8
#> # … with 44 more rows

接下来,我将分离与预测值特别远的观测:

std_resid <- resid(mod) / mod$s  #标准残差
outlier <- filter(mpg, abs(std_resid) > 2)
outlier  #称之为异常值
#> # A tibble: 6 x 11
#>   manufacturer model   displ  year   cyl trans   drv     cty   hwy fl    class  
#>   <chr>        <chr>   <dbl> <int> <int> <chr>   <chr> <int> <
  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值