失眠网,内容丰富有趣,生活中的好帮手!
失眠网 > R语言数据可视化 ggplot2基础2 创建单图层的散点图 创建facet

R语言数据可视化 ggplot2基础2 创建单图层的散点图 创建facet

时间:2019-12-29 15:23:52

相关推荐

R语言数据可视化 ggplot2基础2 创建单图层的散点图 创建facet

R语言数据可视化 ggplot2基础2 创建单图层的散点图 创建facet

单图层散点图单图层散点图的facet

单图层散点图

这一讲我们从最简单的散点图开始介绍ggplot2应用的基础,首先我们下载并应用tidyverse包:

install.packages("tidyverse")library(tidyverse)

用tidyverse自带的数据mpg举例,

> ggplot2::mpg# A tibble: 234 x 11manufacturer model displ year cyl trans drvcty<chr> <chr> <dbl> <int> <int> <chr> <chr> <int>1 audi a41.8 19994 auto~ f 182 audi a41.8 19994 manu~ f 213 audi a42 4 manu~ f 204 audi a42 4 auto~ f 215 audi a42.8 19996 auto~ f 166 audi a42.8 19996 manu~ f 187 audi a43.1 6 auto~ f 188 audi a4 q~ 1.8 19994 manu~ 4 189 audi a4 q~ 1.8 19994 auto~ 4 1610 audi a4 q~ 2 4 manu~ 4 20# ... with 224 more rows, and 3 more variables:# hwy <int>, fl <chr>, class <chr>

在这个数据中,我们比较关注displ与hwy这两个变量,displ表示引擎尺寸(升),hwy表示高速路上的燃油效率(英里/加仑)。为了展示这两个变量之间的关系,我们先画一个简单的散点图:

ggplot(data = mpg)+geom_point(mapping = aes(x = displ, y = hwy))

因为我们只想要一个散点图,所以用minimal code,而不是用上一讲介绍的Layered Grammar,如果用Layered Grammar来写那就是

ggplot()+layer(data = mpg,mapping = aes(x = displ, y = hwy),geom = "point",stat = "identity",position="identity")+scale_y_continuous()+scale_x_continuous()+coord_cartesian()

这段代码的输出与minimal code输出的图像一样,但这段代码是严格按照Layered Grammar来写的,ggplot()开头表示接下来要应用图形语法创建图形对象,第一步是创建图层,每一个图层包含数据、映射(aesthetic mapping)、几何对象、统计变换、位置调整;第二步是指定scale以及坐标系统;对比Layered Grammar与minimal code,大家可以开始建立一些直觉,哪些是可以省略的,哪些是minimal requirement,后续的代码样例都用minimal code。

整体来看这个散点图是有一个下降的趋势的,但右边中部的哪些点很可能导致线性拟合残差出现非线性pattern,因此我们希望引入另一个变量能解释这种现象,于是我们可以把不同车型对应的散点用不同颜色表示:

ggplot(data = mpg)+geom_point(mapping = aes(x = displ, y = hwy, color = class))

这样我们就可以分车型比较引擎尺寸与燃油效率的关系了。

大家可以自行尝试在aesthetics mapping中把color=class改为alpha=class,shape=class或者size=class,这三个语句可以分别用透明度、点型、点的大小表示不同的车型。

单图层散点图的facet

如果我们不想把这些车型综合到一张图下比较,而是用subplot展示每一个车型引擎尺寸与燃油效率的关系,那么我们就需要创建facet了。

Minimal Code:

ggplot(data = mpg)+geom_point(mapping = aes(x = displ, y = hwy))+facet_wrap(~class,nrow = 2)

Layered Grammar:

ggplot()+layer(data = mpg,mapping = aes(x = displ, y = hwy),geom = "point",stat = "identity",position="identity")+facet_wrap(~class,nrow = 2)+scale_y_continuous()+scale_x_continuous()+coord_cartesian()

facet_wrap(~class,nrow = 2)表示用车型的数据作为subplot创建facet,subplot均匀排列为两行。

也可以使用两个变量创建facet,比如把facet_wrap(~class,nrow = 2)改成facet_grid(drv~cyl),得到的结果就是

如果想去掉行,只保留列,可以用facet_grid(.~cyl)替换,

如果觉得《R语言数据可视化 ggplot2基础2 创建单图层的散点图 创建facet》对你有帮助,请点赞、收藏,并留下你的观点哦!

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。