接下来,让我们来实现一下上面的热图。

为了绘制这种热图,首先要准备两类数据。
(1)基因表达矩阵,行是基因,列是样本,表达值可以是FPKM或者log转化后的表达值等都可以。
(2)基因名称列表,将待标识的重要基因名称以一排的形式放在一个列表中。
随后,将上述两个数据导入R中,绘制热图。
首先读取基因表达值矩阵,绘制一个常规的无基因名称的热图。
随后,将重要的待展示名称的基因名称列表读入到R中,并添加在热图右侧显示出。
我们根据legends这一节的内容进行一些调整
基础知识,多多学习
先通过K均值聚类算法,把这些基因聚成30类来画热图。
绘制热图,最常用的是R语言,当然也能用GraPHPadPrism做。但如果数据量不是特别大的话,这里推荐一个在线工具ClustVis,但数据量大时还是容易卡顿。不同基因在不同样本中的表达量,可能会跨越好几个数量级,这样就会把色键分得很细,所以通常会对表达量取对数,或取Z-score,这样色键的范围一般就在个位数内变化。
另一个不太卡的在线工具叫Morpheus,博大研究所开发的。还有桌面软件HemI,华中科技大学开发的。
近日,看到-生信作曲家-发的帖子,展示的内容是单细胞差异基因的图,是利用热图的形式展现的,在一个热图上可以展示不同cluster中不同组的基因表达阳性细胞比例,差别一目了然,可以同时展示很多的基因。
首先构建作图数据,我们用最“笨”的办法吧,分别找出不同细胞类型下,两组之间(GM,BM)的差异基因,这里设置阈值为0,让所有基因都保留下来。然后设置需要查看或者展示的基因,分别在各个差异基因文件中提取这些基因的表达数据,我们需要的数据是ptc1和ptc2这两列,分别对应两个分组。最后将所有细胞差异基因中提取的数据进行合并就可以作图。
热图的做法很简单,参考我们之前的系列:
画热图只标注感兴趣的基因名称
热图2:分组聚类,让热图分裂
热图3:热图行列分组信息注释
热图4:ComplexHeatmap画复杂热图行列注释
我们可以直接用pheatmap来画,但是区别在于需要将每个基因在细胞中的表达数值显示在热图上,只需要加display_numbers=TRUE参数即可。
聚类最后导出pdf图片,用AI修饰一下即可。
当然ComplexHeatmap包的Heatmap函数也是适用的。如果需要进行更多的修饰和改造也是可以的。(补充:之前的热图系列没有说到一个问题就是ComplexHeatmap做热图之后的legend标题的问题,自动显示的是matrix,而且每画一次,就在后面加数字,有很多小伙伴有这个疑问。其实在他的参数heatmap_legend_param中是可以定义标题和legend位置的。)
最后修饰修饰成为一个可发表的图片。
1.输入demo数据到R中利用read.delim()函数读取demo.txt文件,将文件中的基因表达数据存到名为data的对象中。利用str()函数查看data对象,存储有100个观测值(obs,即100个基因转录本),每个观测值对应20个变量(即在20个样本中的表达值水平),数据类型为数值型(num)。已知其中sample1~sample10来自A组,sample11~sample20则来自B组。2.利用pheatmap包中的pheatmap()函数绘制热图键入代码,按默认方式进行热图绘制简单一句代码,热图便绘制完成
组学数据已经泛滥,但是信息的挖掘仍任重道远。顺手的工具,可以节省使用者尽可能多的时间,或者将看起来很复杂,很难以完成的事情,变得非常简单。
图形的掰弯,这个是我很久以前已经实现的功能,当然这个功能的灵感(而不是实现逻辑)来至《TheGrammerofGraphics》(这本书也是R包ggplot2的实现基础)。图形的掰弯,正如本公众号早前的推文介绍,事实是笛卡尔坐标系像极坐标系转换的过程。坐标的转换是一个事情,而图形的变换是另一个事情,比如矩形要办成中空的扇形等。
热图,我已经不止一次谈及,如果早前有关注生信札记公众号的朋友,那么应该知道,TBtools有两个热图功能,AmazingHeatmap和FancyHeatmapBrowser,各有所长。一般用过的人,大部分时候都会觉得真的是Amazing。后者目前似乎用的人不多,不过我们课题组有一些相关成果会应用上。或许有时候,过于非常规的出图逻辑(往往也是更优秀的发表级图片)并不能为多数人所接受。所以没有人用,也是意料之内。
优秀的人,总是会突破已有局限的。
我写AmazingHeatmap在先,而后续才实现了掰弯逻辑。掰弯逻辑的实现,本身是为了Circos图工具的实现。但是我并没有想到,会有TBtools用户在我之前挖掘出了掰弯的热图的使用逻辑。
掰弯的热图,目前已可在数个已发表工作中见到。往往,使用这一功能的目的,可能是尽可能展示更多的基因。这个需求其实很容易产生。有时候,我们展示十几个基因,那么常规的矩形热图效果就很不错;但是,当基因数目上升到数十上百,那么可能图版就不好放下。此时,圆环状的优势就会体现出来。
首先,应该升级TBtools到最新版本,然后,还是打开AmazingHeatmap这个工具
第一步是,大概调整一些文字与图形的距离,主要原因是文字总归是文字,使用的空间与我们图形元件使用的空间不同,所以距离需要自己多试试...,我同时也调整了树的宽度
首先是一个提示操作,TBtools的所有图片是交互的,原本图是这样的
在图形外的空白处,鼠标右击两次,可显示隐藏元件
摁住Shift键不放,鼠标右键TilePanel,此时会出现菜单,选择
如此,即可合并两个Panel(用于后续统一转换坐标系)
接下来的操作就比较简单,对合并后的Panel,鼠标右键,调出菜单,
这些参数,可以依据自己需要,不断细调。具体就看个人需要了
比如你看都不想看到一个gap
其实,如果你确实花时间去了解一个工具,那么并不会有那么多使用问题。如果有,那么一般是你想要使用别人甚至是开发者的时间来实现你的梦想。既然如此,其实你需要做的是考虑支付一定额度的酬劳。
真正做事情的,往往遇到问题,会自己找到解决办法。比如这位朋友,自己搞定一个图,最后整到微信头像上
近日,事情挺多的。或许生物学问题值得做的事情已经很多了,写工具已经放在第二甚至第三位。正如我们所看到的,过得好的,更多的还是做生物学问题的,而不是写工具的。
当然,写工具,本身也是为了解决生物学问题,只是为谁解决生物学问题,这是一个需要问自己的问题。