数据处理基础—ggplot2了解一下

书籍翻译

好的书籍是人类进步的阶梯,但有些人却找不到优秀的阶梯,为此我们开设了书籍翻译这个栏目,作为你学习之路的指路明灯;分享国内外优秀书籍,弘扬分享精神,做一个知识的传播者。

希望大家能有所收获!

书籍翻译历史目录

引言—关于课程

scRNA-seq简介

scRNA-seq原始数据的质控

scRNA-seq数据处理—文件格式小结

scRNA-seq数据处理—demultiplexing

scRNA-seq数据的处理—STAR

scRNA-seq数据处理—Kallisto

scRNA-seq表达矩阵的构建

数据处理必备—R安装

数据处理基础—数据类型了解一下

数据处理基础—什么是整齐数据和Rich Data

5.8 ggplot2简介

5.8.1

什么是ggplot2

ggplot2是由Hadley Wickham设计的R软件包,它有助于数据绘图。在本实验中,我们将简要介绍该软件包的一些功能。如果您想了解更多关于如何使用ggplot2的信息,我们建议您阅读Hadley Wickham撰写的“ggplot2 Elegant graphics for data analysis”。

5.8.2

ggplot2的原理

  • 如果要使用ggplot2绘制数据,则数据必须是数据框。

  • 使用aes映射函数来指定数据框中的变量如何映射到图上的要素

  • 使用geoms来指定数据在图表中的表示方式,例如。散点图,条形图,箱形图等。

5.8.3

使用aes映射功能

aes函数指定数据框中的变量如何映射到绘图上的要素。要了解其工作原理,让我们看一个例子:

library(ggplot2)
library(tidyverse)
set.seed(1)
counts <- as.data.frame(matrix(rpois(100, lambda = 10), ncol=10, nrow=10))
Gene_ids <- paste("gene", 1:10, sep = "")
colnames(counts) <- paste("cell", 1:10, sep = "")
counts<-data.frame(Gene_ids, counts)
counts
## Gene_ids cell1 cell2 cell3 cell4 cell5 cell6 cell7 cell8 cell9 cell10
## 1 gene1 8 8 3 5 5 9 11 9 13 6
## 2 gene2 10 2 11 13 12 12 7 13 12 15
## 3 gene3 7 8 13 8 9 9 9 5 15 12
## 4 gene4 11 10 7 13 12 12 12 8 11 12
## 5 gene5 14 7 8 9 11 10 13 13 5 11
## 6 gene6 12 12 11 15 8 7 10 9 10 15
## 7 gene7 11 11 14 11 11 5 9 13 13 7
## 8 gene8 9 12 9 8 6 14 7 12 12 10
## 9 gene9 14 12 11 7 10 10 8 14 7 10
## 10 gene10 11 10 9 7 11 16 8 7 7 4
ggplot(data = counts, mapping = aes(x = cell1, y = cell2))

让我们仔细看看最后的命令,ggplot(data = counts, mapping = aes(x = cell1, y = cell2))ggplot()初始化一个ggplot对象并获取参数datamapping。我们将计数的数据框传递给data并使用aes()函数来指定将变量cell1用作x变量,而将变量cell2用作y变量。

任务1:修改上面的命令以初始化ggplot对象,其中cell10是x变量,cell8是y变量。

很明显,我们刚刚创建的图表信息量不大,因为它们上没有显示数据。要显示数据,我们需要使用geoms。

5.8.4

Geoms

我们可以使用geoms来指定我们希望数据在图表上显示的方式。例如,我们选择的geom可以指定我们的数据显示为散点图,条形图或箱形图。

让我们看看我们的图形怎样看起来像散点图。

ggplot(data = counts, mapping = aes(x = cell1, y = cell2)) + geom_point()

现在我们可以看到,cell1和cell2中的基因表达之间似乎没有任何关联。鉴于我们counts随机生成,这并不令人惊讶。

任务2:修改上面的命令以创建折线图。提示:执行?ggplot并向下滚动帮助页面。底部是ggplot包索引的链接。滚动索引,找到geom选项。

5.8.5

从两个以上的细胞中绘制数据

到目前为止,我们一直在考虑数据框中2个细胞的基因数。但是我们的数据框中实际上有10个细胞,比较所有细胞会更好。如果我们想同时绘制来自所有10个细胞的数据怎么办?

目前我们不能这样做,因为我们将每个单独的细胞视为变量并将该变量分配给x轴或y轴。我们可以创建一个10维图来绘制来自所有10个细胞的数据,但这是a)不可能与ggplot b)不太容易解释。我们可以做的是整理我们的数据,以便我们有一个代表细胞ID的变量和另一个代表基因计数的变量,并将它们相互映射。在代码中,这看起来像:

counts<-gather(counts, colnames(counts)[2:11], key = 'Cell_ID', value='Counts')
head(counts)
## Gene_ids Cell_ID Counts
## 1 gene1 cell1 8
## 2 gene2 cell1 10
## 3 gene3 cell1 7
## 4 gene4 cell1 11
## 5 gene5 cell1 14
## 6 gene6 cell1 12

基本上,之前的问题是我们的数据不整齐,因为一个变量(Cell_ID)分布在多个列上。现在我们已经解决了这个问题,我们更容易在一个图上绘制来自所有10个细胞的数据。

ggplot(counts,aes(x=Cell_ID, y=Counts)) + geom_boxplot()

任务3:使用更新的counts数据框绘制条形图,其中Cell_ID为x变量,Counts为y变量。提示:您可能会发现阅读很有帮助?geom_bar

任务4:使用更新的counts数据框绘制散点图,其中Gene_ids为x变量,Counts为y变量

5.8.6

绘制热图

可视化基因表达数据的常用方法是使用热图。在这里,我们将使用R包pheatmap来执行此分析,并使用我们将命名为test的一些基因表达数据作为测试数据。

library(pheatmap)
set.seed(2)
test = matrix(rnorm(200), 20, 10)
test[1:10, seq(1, 10, 2)] = test[1:10, seq(1, 10, 2)] + 3
test[11:20, seq(2, 10, 2)] = test[11:20, seq(2, 10, 2)] + 2
test[15:20, seq(2, 10, 2)] = test[15:20, seq(2, 10, 2)] + 4
colnames(test) = paste("Cell", 1:10, sep = "")
rownames(test) = paste("Gene", 1:20, sep = "")
pheatmap(test)

让我们花一点时间来弄清楚这张图片向我们展示了什么。每行代表一个基因,每列代表一个细胞。每个细胞中每个基因的表达的程度由相应框的颜色表示。例如,我们可以从该图中看出,基因18在细胞10中高度表达,但在细胞1中低表达。

该图还为我们提供了有关聚类算法结果的信息。通常,聚类算法旨在将数据点(例如,细胞)分成其成员彼此更相似的组。在图的顶部和左侧绘制的树是聚类算法的结果,并使我们能够看到,例如,细胞4,8,2,6和10彼此更相似它们是相似的细胞7图表左侧的树表示应用于数据集中基因的聚类算法的结果。

如果我们仔细观察树,我们可以看到它们最终具有与细胞和基因相同数量的分支。换句话说,细胞聚类的总数与细胞总数相同,并且基因聚类的总数与基因的总数相同。显然,这不是非常有用的信息,当我们查看超过10个细胞和20个基因时,这将变得不切实际。幸运的是,我们可以设置我们在图上看到的聚类数量。让我们尝试将基因聚类的数量设置为2:

pheatmap(test, kmeans_k = 2)

现在我们可以看到这些基因分为两个类 - 一组8个基因在细胞2,10,6,4和8中相对于其他细胞upregulated ,2,10,6,4,8相对于其他细胞downregulated在细胞中下调。

任务5:尝试将群集数量设置为3.您认为哪个群集数量更具信息量?

5.8.7

主成分分析

主成分分析(PCA)是一种统计过程,它使用变换,将一组观察值转换为一组称为主成分的线性不相关变量值。通过转换,使得第一主成分尽可能地考虑数据的可变性,并且每个后续主成分考虑了在必须与先前成分正交的约束下可能的最大方差量。

PCA图是获取数据概览的好方法,有时可以帮助识别解释数据中大量可变性的混杂因素。我们将研究如何在未来的实验室中更深入地使用单细胞RNA-seq分析中的PCA图,这里的目的是让您大概了解PCA图是什么以及它们是如何生成的。

让我们为我们的test数据制作一个PCA图。我们可以使用这个ggfortify包让ggplot知道如何解释主要成分。

library(ggfortify)
Principle_Components<-prcomp(test)
autoplot(Principle_Components, label=TRUE)

任务6:将你的聚类与pheatmap聚类进行比较。它们有关系吗?(提示:看看我们绘制的第一个pheatmap图的基因树)

任务7:为counts(下方)生成热图和PCA图:

set.seed(1)
counts <- as.data.frame(matrix(rpois(100, lambda = 10), ncol=10, nrow=10))
rownames(counts) <- paste("gene", 1:10, sep = "")
colnames(counts) <- paste("cell", 1:10, sep = "")

(0)

相关推荐

  • 自己如何画气泡图dotplot?

    今天是生信星球陪你的第803天 大神一句话,菜鸟跑半年.我不是大神,但我可以缩短你走弯路的半年~ 就像歌儿唱的那样,如果你不知道该往哪儿走,就留在这学点生信好不好~ 这里有豆豆和花花的学习历程,从新手 ...

  • 我从Science中,偷学到这个聚类分析技能!真舍不得分享

    大家好,我是风.欢迎来到风风的从零开始单细胞系列.前面我们已经学习了数据下载.构建分析对象和数据质控.如果你的scater出现了一些警告内容,提示函数被替代,那也不用着急.正如其他内容一样,scate ...

  • 单细胞RNA

    一.单细胞single cell RNA-seq简介 1.Bulk RNA-seq(大量RNA-seq) Measures the average expression level for each ...

  • 数据处理基础—数据类型了解一下

    书籍翻译 好的书籍是人类进步的阶梯,但有些人却找不到优秀的阶梯,为此我们开设了书籍翻译这个栏目,作为你学习之路的指路明灯:分享国内外优秀书籍,弘扬分享精神,做一个知识的传播者. 希望大家能有所收获! ...

  • 数据处理基础—什么是整齐数据和Rich Data

    书籍翻译 好的书籍是人类进步的阶梯,但有些人却找不到优秀的阶梯,为此我们开设了书籍翻译这个栏目,作为你学习之路的指路明灯:分享国内外优秀书籍,弘扬分享精神,做一个知识的传播者. 希望大家能有所收获! ...

  • Java应用基础进阶——GPS数据处理

    题目内容: NMEA-0183协议是为了在不同的GPS(全球定位系统)导航设备中建立统一的BTCM(海事无线电技术委员会)标准,由美国国家海洋电子协会(NMEA-The National Marine ...

  • 【科普】LiDAR 从基础入门到数据处理总结归纳

    前言 在学习生涯将要结束之际,博主将自己三年所学到的东西进行一个总结与归纳,一是对所学知识的一个回顾,二是整理成一个完整的资料,以防不时之需,三是供后来者少走弯路,继续前行! 一.LiDAR 基础与入 ...

  • vba教程视频,VBA(基础篇+提高篇+实战篇)Excel数据处理教学视频

    视频教程下载地址:https://306t.com/file/686368-477760582 VBA基础篇(Excel数据处理)内容目录: 章节一:开篇导言 课时1 无边数据萧萧下,不尽人工滚滚来1 ...

  • 就算上犬这种基础体位也有很多细节可以打磨.......

    关于上犬中手臂位置和腿的控制,我先介绍给大家下面这个5分钟的David Garrigues的视频课程. 下面先看这个视频教学,视频之后我再用文字图片的方式做一点补充. 具有丰富教学经验和擅长很多实用具 ...

  • 厨师长教:“8种翻锅基础手法”,厨师入门硬核翻锅教程,快收藏

    厨师长教:“8种翻锅基础手法”,厨师入门硬核翻锅教程,快收藏

  • 美容基础培训之: 认识皮肤

    美容基础培训之: 认识皮肤

  • 奇门遁甲基础知识人盘之八门

    转自:杨治奇门 奇门遁甲代表人事的是人盘.地盘是定位盘,而人盘是可以转动的.人盘的实现方法是以洛书九宫八卦为框架,在盘上布八门.八门的顺序为:休门.生门.伤门.杜门.景门.死门.惊门.开门.下面分别简 ...