欢迎访问 生活随笔!

生活随笔

当前位置: 首页 >

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

发布时间:2025/4/14 67 豆豆
生活随笔 收集整理的这篇文章主要介绍了 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 drv cty<chr> <chr> <dbl> <int> <int> <chr> <chr> <int>1 audi a4 1.8 1999 4 auto~ f 182 audi a4 1.8 1999 4 manu~ f 213 audi a4 2 2008 4 manu~ f 204 audi a4 2 2008 4 auto~ f 215 audi a4 2.8 1999 6 auto~ f 166 audi a4 2.8 1999 6 manu~ f 187 audi a4 3.1 2008 6 auto~ f 188 audi a4 q~ 1.8 1999 4 manu~ 4 189 audi a4 q~ 1.8 1999 4 auto~ 4 16 10 audi a4 q~ 2 2008 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的全部内容,希望文章能够帮你解决所遇到的问题。

如果觉得生活随笔网站内容还不错,欢迎将生活随笔推荐给好友。