最简单最实用的R语言热图绘制教程(没有R基础-掌握只需10min)
从R语言介绍与安装,再到出一个能看的热图
前面用Excel绘制热图,在熟练的情况下,操作起来其实还是比较快速和方便的,尤其对于具有代码恐惧症的朋友。教程发出去之后,即有收到消息,希望能写一个用R语言绘制热图的教程。考虑到目前本人的时间和精力以及”生信札记”公众号其实关注的人不多,我即应下,Excel绘制热图的推文阅读量超过500,我就写一个用R语言绘制热图的。然后….确实超过500了,那么也不爽约,动手写写。
?如何写一个实用的,简单的用R语言绘制热图的教程?我想这篇推文得从零基础的角度出发,从偏颇的R语言的介绍与安装开始。
简单介绍R语言
关于R语言,真的要了解他是什么,权威的答案google即可。这里只说我个人有偏颇的观点,重点在说清楚他是什么东西。R语言,从其名字来看,其是一门编程语言,也就是语言。语言就有其语法,跟我们学的外语如英语的语法是一个概念。几乎每一门编程语言都需要编译器或与解释器,这两个器的主要作用就是,把我们按照某种编程语言如R语言的语法写出来的语句,翻译成计算机能识别的代码或并执行这些代码并返回结果。
为什么是R语言
计算机绘图或者出图,到底就是定点
和描线
,后者最终也是点。GUI软件更或者是Excel等出图软件的操作界面实质是对代码的封装
,将看似复杂的绘图代码隐藏起来,就如我们手上的智能手机如iphone
,几乎所有人都可以直接上手使用,而不需要了解到底开机关机,打开微信
等的具体硬件或者编程语言或代码实现。
编程语言有很多,目前也有较多的语言是支持出图的。而目前在我所了解的生信数据出图上,最常见的就是
R (语言)
Python
R语言,前身是S语言,是一门统计学家发明的语言,所以事实上其天生善于完成统计运算,内置了太多统计相关函数,如t.test()。而生物学研究,在现在每时每刻都产生大量数据的时间点上,从数据中抽取出信息,生物学研究比以往任何时候更依赖于统计(因为….数据太多,根本看不多来,正确的统计分析至少可以简化)。当然,可视化也是重点,对数据涵盖的信息进行可视化,我们甚至使用生物学家特有的直觉,用我们自己专业的视角去观察数据。对此,R正好两者都擅长或者现在都擅长。
R语言,其实存在不少人包括我,觉得他其实并不太像一门编程语言。但是这并没有所谓,我个人认可的有偏颇的观点是:一门编程语言的流行,要么其设计优秀,要么具有稳定而活跃的社区。设计优秀与社区活跃可以是相辅相成,但事实上只要有活跃的社区,设计是否优秀可能暂时并没那么重要。为此引入一句,大家可以看看perl曾经的火爆程度
。
R语言,就是一个庞大的帝国,他其实是一个全家桶,封装了各种,也调用了各种,包括了Java码,C码,C++码等等。对R语言的基本使用,其实就是用所谓的 R 包 (R package)。每一个R包的作者会把有用或者自己觉得有用的其写的函数更或者对象封装起来,最后,
对于我们使用者而言,就只要下载安装R包,然后准备数据和输入函数,得到结果
这一个R语言的使用逻辑
简单到几乎所有人x3(重复三遍的意思)都会用,也非常适合完全没有计算机基础的生物学研究工作者。
无论如何,反正用R就对了,R语言现在很火,即使他隐藏的复杂统计模型的同时,也隐藏了各式各样的问题与坑。
进入正题
安装R语言的运行环境(解释器)
在windows下安装R语言运行环境,是一件再简单不过的事情(在LInux和Mac上也是类似)。进入R语言的官网主页,https://cran.r-project.org/,即可看到R语言环境的下载,根据自己的系统进行选择,点击跳转
这里默认使用的是一台完全没有安装过的R语言环境的电脑
如此,等待下载完毕之后,进行安装。安装R语言环境。一般改选为English,毕竟是外文开发的,中文的提示有时看起来很怪。然而当然也是用的中文。
随后建议一路默认,同样注意,
建议程序都安装在路径没有空格没有中文的目录下,如果这一行看不懂,那就不管了,默认先
最后,可以在桌面看到R语言运行环境的图标,现在需要做的是,双击打开它,并进入R的GUI运行环境(提示,当然有其他运行方式,如脚本运行,这里先不扯)
进来之后,那就开干。
安装R语言绘制热图最简单的R包(pheatmap)
最基本R语言使用,其实就是使用各式各样的函数
,而这些函数,要么是内置的,要么是别人写好并封装成R包的。
进行热图绘制,最方便的R包,莫过于pheatmap
。
所以,第一步,安装这个R包
在保证网络畅通的情况下,输入
install.packages("pheatmap")
可能会弹出窗口,让选择镜像,选择一个距离自己近的地方,这样下载起来会快很多
如果出现下面这种提示,似乎是不用理会,一路确定或者下一步即可
完成安装之后,直接输入,如果发现没有任何提示,那么就是安装完成了
library(pheatmap)
使用pheatmap进行热图绘制
准备数据,最简单粗暴的方式,从Excel中复制
,
此时,这个基因表达矩阵已经存放在电脑的剪切板中,回到R语言运行环境,输入(如果是直接复制下面这行代码,那么注意,复制代码的同时已经替换了剪贴板内容,此时黏贴代码之后不要回车,先回去Excel重新复制表达开矩阵)
Exp<-read.delim("clipboard",header=T,row.names=1)
注意,所有字符都是外文的,如果出错,注意是不是 横杆 在复制代码的时候被转码成 中文的,自己输入就没问题。
此时你只需要第三行代码,就可以输出一张可以看的热图
pheatmap(Exp)
一般情况下,我们需要相对基因进行标准化
pheatmap(Exp,scale="row")
列的顺序是时间序列,我们不应该对列进行聚类
pheatmap(Exp,scale="row",cluster_cols=F)
配色似乎也不好看,
pheatmap(Exp,scale="row",cluster_cols=F,color = colorRampPalette(c("navy", "white", "firebrick3"))(50))
差不多了,剩下的就看自己造化了
差点忘了保存图片
即可保存为各种格式的图片
写到这里
用了一个多小时写了这个,相信应该可以让零基础的朋友用R语言出一张能看的热图。pheatmap
的功能还是可以的,出几个不错的热图,有很多细节可以调整。操作的灵活,修改的便捷,可能才是用代码绘图的方便之处。用R语言绘图,那么基础就是掌握R语言。如此才能更好的R,出更好看的图。
学习R语言,还是需要时间的。具体或许后面再写写R学习的个人经验。
当然,假期已经结束了,今天就回校干课题了。如果后面可以抽出时间,那么R语言绘制热图的,或许至少再出一个 pheatmap 更多的使用细节。毕竟,做一张拿得出手的热图,还是需要更多的操作。
最后附上使用的代码
library(pheatmap)# 注意,剪切板中必须是表达矩阵Exp<-read.delim(file="clipboard",header=T,row.names=1,sep="\t") pheatmap(Exp) pheatmap(Exp,scale="row") pheatmap(Exp,scale="row",cluster_cols=F) pheatmap(Exp,scale="row",cluster_cols=F,color = colorRampPalette(c("navy", "white", "firebrick3"))(50))