R语言编程入门(数据可视化及可视化思维)

R语言编程入门(数据可视化及可视化思维)

写在前面的

上期推文主要介绍了如何学习R语言的函数包,并以rvest爬虫函数包为例,详细介绍了函数包学习、爬虫知识和R语言编程的强化训练并掌握R语言爬虫的三个重要函数read_html、html_nodes、html_text使用方法及搭配管道符使用的技能。了解HTML语言格式。在上期推文最后我画了一个词云图。这个图对大家来说还还是比较新鲜的,本次我来向大家介绍R语言的另外一大功能:强大的可视化功能

数据可视化

R语言的可视化同样也涉及到了一定的编程语法,但是这套语法和前面讲的基本R语言编程语法不同,它有一套自己的风格。很多人会疑问为什么一个编程语言数据分析和数据可视化的语法不同呢?这是因为R语言的很多可视化功能都是用一些R语言工作者开发的函数包,不同的工作者风格不同,设计的函数、功能都有属于他们自己的风格。这也是为什么我在讲可视化之前专门讲一下如何学习R语言函数包。

目前很多教程都有讲R语言的可视化,甚至有的教程还真把R语言当一个作图的软件了。不过这些教程基本都是在讲怎么画柱状图、怎么画散点图,最多就是讲讲怎么画热图。其实说句实在话,很多教程并没有真正领悟到可视化的精髓,其实我也没有领悟到。这次我就以我的视角,讲一下如何去思考可视化。以我们最开始的那片推文为例子,在R语言样本间相关性分析中我做了一个这样的图


这个图是根据RNA-seq的样本的readscount值进行样本间相关性分析,用样本间相关性皮尔逊系数进行的可视化。A、B、C是三个小鼠感染病毒前的readscount值,AD、BD、CD是它们对应的感染病毒后安乐死的readscount值。下面我们继续在这个图上进行可视化深入研究。上次我使用了如下代码可视化这个图

library(corrplot)
#使用corrplot函数可视化相关系数矩阵
corrplot(GE_cormatrix, type = "upper", order = "hclust", tl.col = "black", tl.srt = 45)

上面这个代码使用了corrplot函数,这个函数是可视化相关性系数矩阵。而GE_cormatrix是相关系数矩阵,这个矩阵是这样的


矩阵中第i行j列代表第i个样本和第j个样本之间的相关性系数,由于任何一个样本和它本身默认为100%相关,所以矩阵的对角线都是1。而可视化则是画出了这个矩阵的上半部分,如下图所示

所以type=”upper”就是这个含义,而order参数选择的是=hclust,这个是说最后可视化的结果是不是按照某种方式排序,我选择的hclust则是以聚类的方式排序。tl.col = “black”, tl.srt = 45这两个参数是选择字体颜色和是否倾斜。接下来我们来详细以order=hclust来详细衍生这张图的可视化
从统计学的视角来说,热图是一种以颜色的不同或者深浅来展示数据与数据之前区别的可视化方法,而在可视化的视角来说,可视化则是以图形或者颜色的变化来展示数据的变化。如果把数据看做自变量,那么图形或者颜色就是数据的依变量。所以学习数据的可视化,并不是大量地学习各种函数包怎么用啊,也不是大量去学习各种软件的使用。而是去理解可视化的数学意义!就像我说的一样,生物信息学编程到最后就是看个人的数学与逻辑修养。上面这张图我就是通过了图形大小的变化和颜色深浅的变化来展示样本间的相关关系。既然样本之间有相关性系数矩阵,那么我们还可以用什么方法展示这个数据呢

聚类树

我们已经有了样本与样本之间的皮尔逊相关系数矩阵,我们如果把每个样本看作空间中的点,例如我们的数据中,A和B相关系数、A和C的相关系数很高,那么在空间中可以看做A和B还有C的距离很近,而AD又与BD和CD的相关系数高,在空间中AD与BD还有CD的距离很近。所以引入距离的概念就很容易指导我们使用聚类分析来可视化数据。而聚类分析不能直接用相关系数矩阵转化为距离矩阵。使用命令

#dist函数是R语言自带的计算距离矩阵的函数
dist(GE_cormatrix)


这样就算出了A、B、C、AD、BD、CD作为空间中样本点之间的空间距离。然后我们就可以进行可视化了

#hclust函数是R语言自带的将距离矩阵聚类的函数,而plot函数也是R语言自带的画图函数,将聚类信息可视化出来
plot(hclust(dist(GE_cormatrix)))


这样我们在不使用任何函数包的情况下可视化出了样本间的相关关系。聚类树显示出,小鼠感染病毒前后readscount确实是有差异的。相同处理的小鼠readscount差异不大

热图

如果觉得上面的图只是线条,没有色彩感,我们也可以使用热图来可视化。热图是用颜色来表示数据,比如我们同样利用样本之间的空间距离做热图。

#pheatmap::是引用热图的函数包,这样可以不通过使用library函数加载。as.matrix(dist(GE_cormatrix))则是将相关系数矩阵计算空间距离后矩阵化,因为pheatmap函数要求输入数据是矩阵格式。display_numbers参数则是是否显示距离值
pheatmap::pheatmap(as.matrix(dist(GE_cormatrix)),display_numbers = T)


从热图中看,颜色越红代表距离值越大,也就是空间距离越远,两个样本越不相关,颜色越蓝代表距离值越小,空间距离越近,两个样本越相关。

本次重点

从根本上理解可视化的数学含义!可视化并不单单只是作图,可视化是通过数学图形或者颜色,以一定的映射关系呈现并反映数据的变化趋势。同一个数据有多种不同的方式可视化,不同的数据也可以使用同一种方式进行可视化。所以不要去盲目学习可视化软件,也不要轻信各种讲R语言可视化的培训班,因为没有良好的数学理解能力,学再多的可视化技巧都是等于0,由于可视化类型还有很多,下期推文我们继续讲可视化


 Previous
浅谈文献综述二三事(上篇) 浅谈文献综述二三事(上篇)
浅谈文献综述二三事(上篇) 大家好,阿白师姐第一次上路,还请多多关照。前一段时间刚写完 academic proposal ,老板说,哎呀,你这文字功底不太好啊,那你再写一篇 review 给我瞅瞅吧。就这样,我才有机会和大家谈一下文献综述
2019-05-22 Uranusyt
Next 
R语言编程入门(爬虫函数包的使用) R语言编程入门(爬虫函数包的使用)
R语言编程入门(爬虫函数包的使用)写在前面的 上期推文介绍了R语言编程入门,从了解R语言的5种数据结构和两种控制结构开始,再到借上上篇推文的Readscount数据综合利用R语言编程证明Readscount属于负二项分布。现在再回顾一下R语
2019-05-22 Uranusyt
  TOC