前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >R语言学习--R for Data Science - 2.1 ggplot2

R语言学习--R for Data Science - 2.1 ggplot2

作者头像
R小白
发布2022-04-01 21:25:57
4460
发布2022-04-01 21:25:57
举报
文章被收录于专栏:生信学习生信学习

上一节介绍了跟练所需的软件,R包和数据,这节开始跟练书中的第一块内容:数据可视化

我们分析数据是为了从数据中发现问题或者得到结论,而图形则能给我们带来更多直观的信息。生信分析也不例外,如单细胞测序,数万个细胞,每个细胞上万基因的不同表达水平所构成的数据是非常大的,直接通过数据表格几乎不可能发现有意义的信息,但是我们通过降维可视化可以清晰的看到每个样本的细胞组成,基因表达分布等多层次的信息,能帮助我们更好的理解和分析问题。

用的R包和数据

ggplot2,是这本书的作者之一Hadley Wickham开发的,包括tidyverse,他也是rstudio的首席科学家;ggplot2是个作图功能很强大的R包,底层是Wilkinson图形语法,通过将图形分解为数据映射(数据如何显示在图上),清晰定义了每个图层的语法。

mpg data frame,这个数据框是ggplot2包自带的,数据框是R中的一种数据结构,其每一列是一个变量,每一行是一个观测。mpg数据框包含美国环保机构针对38种型号汽车的观测数据,其中每一列的列名就是变量名,如displ是汽车引擎大小,单位是L;hwy是汽车在高速路上的燃料效率,单位是英里/加仑。这个数据框的具体信息可以通过在console中输入?mpg查看,R中的函数和自带的数据包都可以通过在其名字前加?来查看帮助信息,注意?也必须是英文字符。

代码语言:javascript
复制
> library(ggplot2)
> mpg
# A tibble: 234 × 11
   manufacturer model      displ  year   cyl trans drv     cty   hwy fl    class
   <chr>        <chr>      <dbl> <int> <int> <chr> <chr> <int> <int> <chr> <chr>
 1 audi         a4           1.8  1999     4 auto… f        18    29 p     comp…
 2 audi         a4           1.8  1999     4 manu… f        21    29 p     comp…
 3 audi         a4           2    2008     4 manu… f        20    31 p     comp…
 4 audi         a4           2    2008     4 auto… f        21    30 p     comp…
 5 audi         a4           2.8  1999     6 auto… f        16    26 p     comp…
 6 audi         a4           2.8  1999     6 manu… f        18    26 p     comp…
 7 audi         a4           3.1  2008     6 auto… f        18    27 p     comp…
 8 audi         a4 quattro   1.8  1999     4 manu… 4        18    26 p     comp…
 9 audi         a4 quattro   1.8  1999     4 auto… 4        16    25 p     comp…
10 audi         a4 quattro   2    2008     4 manu… 4        20    28 p     comp…
# … with 224 more rows

使用下面代码作图

代码语言:javascript
复制
ggplot(data = mpg) + 
  geom_point(mapping = aes(x = displ, y = hwy))
通过上图,我们可以看到汽车引擎大小和其在高速路燃油效率的关系。
通过上图,我们可以看到汽车引擎大小和其在高速路燃油效率的关系。

图形如何产生的?

在上面这张图的代码中,首先使用了ggplot()这个函数,它的功能是创建一个空白坐标系,其xy轴可以通过后续图层添加,它的第一个参数是作图用的数据,用ggplot(data = mpg)就会生成如下图片,是个空白背景:

接下来,通过geom_point()函数添加数据的映射,这里的point是散点图,bar则是条形图,还有很多种形状可以通过这种方式添加;geom函数有个mapping参数,需要使用函数aes()来传递参数给mapping,aes()中需指定x和y参数代表了数据中的哪个变量,如mapping = aes(x = displ, y = hwy),geom函数会继承在ggplot函数中传入的数据,并在这个数据集中寻找指定的x和y变量。

作图模板

代码语言:javascript
复制
ggplot(data = <DATA>) + 
  <GEOM_FUNCTION>(mapping = aes(<MAPPINGS>))

习题练习

1. How many rows are in mpg? How many columns?

这道题主要考察如何查看数据框信息,下面列出3种方法:

#1. 因为这里的对象mpg的数据结构是tibble,可以直接运行对象名:

代码语言:javascript
复制
> mpg
# A tibble: 234 × 11 (这里显示了行数 x 列数)
   manufacturer model      displ  year   cyl trans drv     cty   hwy fl    class
   <chr>        <chr>      <dbl> <int> <int> <chr> <chr> <int> <int> <chr> <chr>
 1 audi         a4           1.8  1999     4 auto… f        18    29 p     comp…
 2 audi         a4           1.8  1999     4 manu… f        21    29 p     comp…
 3 audi         a4           2    2008     4 manu… f        20    31 p     comp…
 4 audi         a4           2    2008     4 auto… f        21    30 p     comp…
 5 audi         a4           2.8  1999     6 auto… f        16    26 p     comp…
 6 audi         a4           2.8  1999     6 manu… f        18    26 p     comp…
 7 audi         a4           3.1  2008     6 auto… f        18    27 p     comp…
 8 audi         a4 quattro   1.8  1999     4 manu… 4        18    26 p     comp…
 9 audi         a4 quattro   1.8  1999     4 auto… 4        16    25 p     comp…
10 audi         a4 quattro   2    2008     4 manu… 4        20    28 p     comp…
# … with 224 more rows

#2. 使用dim()函数:

代码语言:javascript
复制
> dim(mpg)
[1] 234  11

#3. 使用str()函数:

代码语言:javascript
复制
> str(mpg)
tibble [234 × 11] (S3: tbl_df/tbl/data.frame)
 $ manufacturer: chr [1:234] "audi" "audi" "audi" "audi" ...
 $ model       : chr [1:234] "a4" "a4" "a4" "a4" ...
 $ displ       : num [1:234] 1.8 1.8 2 2 2.8 2.8 3.1 1.8 1.8 2 ...
 $ year        : int [1:234] 1999 1999 2008 2008 1999 1999 2008 1999 1999 2008 ...
 $ cyl         : int [1:234] 4 4 4 4 6 6 6 4 4 4 ...
 $ trans       : chr [1:234] "auto(l5)" "manual(m5)" "manual(m6)" "auto(av)" ...
 $ drv         : chr [1:234] "f" "f" "f" "f" ...
 $ cty         : int [1:234] 18 21 20 21 16 18 18 18 16 20 ...
 $ hwy         : int [1:234] 29 29 31 30 26 26 27 26 25 28 ...
 $ fl          : chr [1:234] "p" "p" "p" "p" ...
 $ class       : chr [1:234] "compact" "compact" "compact" "compact" ...

2. What does the drv variable describe? Read the help for ?mpg to find out.

这里告诉我们可以利用帮助文档查找数据集的相关信息,运行?mpg即可

可以看到帮助栏中能够找到drv这个变量的含义,它代表汽车的驱动类型。
可以看到帮助栏中能够找到drv这个变量的含义,它代表汽车的驱动类型。

3. Make a scatterplot of hwy vs cyl.

用其他变量作图,直接套模板即可

代码语言:javascript
复制
ggplot(data = mpg) + 
  geom_point(mapping = aes(x = cyl, y = hwy))

4. What happens if you make a scatterplot of class vs drv? Why is the plot not useful?

先作图看一下:

代码语言:javascript
复制
ggplot(data = mpg) + 
  geom_point(mapping = aes(x = class, y = drv))

毫无规律,通过查看帮助知道class代表车型,车型和车的驱动类型本身就没有相关性,这个图自然也就没什么意义了。提示我们作图时需要考虑变量的相关性,思考要通过图形表达什么信息。

参考资料:

https://r4ds.had.co.nz/index.html

本文系转载,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文系转载前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档