Build a Plot Layer by Layer
5.1 简介
(略)
5.2 创建图表
(以汽车耗油量mpg数据集为例)
当我们使用ggplot()
创建图表时,最基本的代码是:
ggplot(mpg, aes(displ, hwy)) +
geom_point()
实际上这条代码包含了两步命令:
第一个是:
p <- ggplot(mpg, aes(displ, hwy))
它的意义只是创建了一个图层(将这个图层赋予变量p),横纵坐标是数据集mpg
中的两组变量名称displ
和hwy
,但是由于没有命令几何图形,数据无法形成映射,所以就是一块只有横纵坐标的白板↓↓↓↓↓↓
第二个是:
p + geom_point()
在p的基础上,添加函数geom_point()
(散点图),括号是空的就是各种参数都是默认值,于是有了确切的几何图形命令,白板上就有图了↓↓↓↓↓↓
在geom_point()
这个命令的背后,隐藏着一个叫做layer()
的命令,他的意思是创造一个图层,下面的代码里显示了藏在layer()
里面的各种参数:
p + layer(
mapping = NULL,
data = NULL,
geom = "point",
stat = "identity",
position = "identity"
)
这里面就包括了图层(layer)的五个重要组成部分:
-
mapping:映射,就是
aes()
函数,通常省略,NULL就是指默认的ggplot()
函数中的映射
-
data:数据,覆盖默认数据集,通常省略,NULL就是默认取
ggplot()
中的数据集
-
geom:几何对象,包含很多美学参数,例如颜色等,在这里设置不会成为标度。
-
stat:统计变换,执行一些统计汇总,默认设置为
"identity"
时保持不变。这个参数在直方图和平滑曲线图中应用较多。geom
和stat
设置一个即可。
-
position:位置,调整遮盖情况
5.3 数据
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.
ggplot2的作用只是将数据框可视化。在使用之前应该提前整理你的数据框,使其整齐、易于操作(第九章)。
ggplot2的特点在上面的散点图基础上添加一条拟合的曲线:
library(ggplot2)
mpg
mod <- loess(hwy~displ, data = mpg)
grid <- data_frame(displ = seq(min(mpg$displ), max(mpg$displ), length = 50))
grid$hwy <- predict(mod, newdata = grid)
grid
std_resid <- resid(mod) / mod$s
outlier <- filter(mpg, abs(std_resid) > 2)
outlier
ggplot(mpg, aes(displ, hwy)) +
geom_point() +
geom_line(data = grid, colour = "blue", size = 1.5) +
geom_text(data = outlier, aes(label = model))
上述数据处理过程,简化之,可以使用函数geom_smooth()