打开APP
userphoto
未登录

开通VIP,畅享免费电子书等14项超值服

开通VIP
代码放送 | 热图绘制函数heatmap.2()的参数解析

在进行数据分析的时候,你一定见过或用过热图(heatmap)。它适合二维数据表的可视化,数值大小可以用不同颜色梯度进行展示。

事实上,经过高通量测序生成的物种丰度表以及差异分析得到的差异物种丰度表,只有进一步生成直观图,才能更好地进行结果展示,热图就是我们常用的图片类型之一。

然而,你会不会在很多时候觉得绘制出来的热图让你很不满意,想修改却无从下手?且看小锐为你支招:今天给大家介绍一个用于绘制热图的R函数——来自gplots包的heatmap.2(),看看如何利用其修改参数让热图更称你的心意。

一、基础绘图

首先,加载程序包,输入原始数据。

> library(gplots)
> data=read.table('for_plot_filter.txt',header=TRUE,row.names=1,sep='\t',check.names=F,quote='')

输入的数据格式是这个样子的:

然后,R画图。

> pdf('heatmap.pdf',12,16)
> heatmap.2(as.matrix(data))
> dev.off()

如果不对参数进行任何修改,仅用默认参数,得到的图形是这个样子的:

得到这么原始的图片,我想你的内心一定是崩溃的。那么,接下来就来看看如何通过调整不同参数,让我们的热图改头换面吧。

二、调整参数

2.1  修改整体布局

> pdf('heatmap.pdf',12,16)
> par(oma=c(0,0,0,20)) #调整边界
> lmat = rbind(c(4,4),c(0,3),c(2,1),c(0,5)) #安排热图每个部分的位置
> lhei = c(0.5,0.8,4,0.5) #每个部分的高度比例
> lwid = c(1,3) #页面宽度方向的比例
> cexRow=2 #行名,即物种名的字体大小
> cexCol=2 #列名,即样品名的字体大小
> margin=c(2,2) #边界宽度
> heatmap.2(as.matrix(data),margins=margin,lmat = lmat,lhei=lhei,lwid=lwid,cexRow=cexRow,cexCol=cexCol)
> dev.off()

这样一来,各部分的安置包括字体的大小都有了很大的改观:

2.2  调整色块及颜色

> note=matrix(0,nrow(data),ncol(data))
>       for(i in 1:nrow(data)){
+         for (j in 1:ncol(data)){
+           if(data[i,j]>0.1) note[i,j]='*' else if(data[i,j]>0.01) note[i,j]='+' else note[i,j]=''
+         } 
+       }   #对样品中相对丰度大于0.01和0.1的物种丰度进行标记,也可以不要
> pdf('heatmap.pdf',12,16)
> par(oma=c(0,0,0,20))
> library(RColorBrewer) #加载调色板
> col = colorRampPalette(c('lightblue', 'yellow', 'orange', 'red'),bias=3)(3000) #设置颜色梯度
> heatmap.2(as.matrix(data),margins=margin,lmat = lmat,lhei=lhei,lwid=lwid,cexRow=cexRow,cexCol=cexCol,
col=col,scale='none',trace='none',
cellnote=note, notecol='black',notecex=1.0, #色块标记设置及标记的颜色和大小
colsep=c(1:ncol(data)),rowsep=c(1:nrow(data)),sepcolor='black',sepwidth=c(0.01, 0.01),  #设置色块之间的间隔及颜色
key.title=NA, keysize=0.06,key.xlab='relative abundance') #图片最上方键的设置,包括大小及名称
> dev.off()

调整色块和颜色后,热图看着清爽多了:

2.3  个性化取消或添加某部分

在上面这张热图中,有行和列两个方向的聚类,即物种和样品的聚类,如果你只想要其中一个方向的聚类树,或者两个都不想要,通过调整dendrogram的值即可。为了更美观,各部分高度和宽度的比例值也可以进行相应修改。

> pdf('heatmap.pdf',12,16)
> par(oma=c(0,0,10,20))
> lmat = rbind(c(4,4),c(0,3),c(2,1),c(0,5))
> lhei = c(0.5,0.2,4,0.5) #修改高度比例
> lwid = c(1,3)
> heatmap.2(as.matrix(data),margins=c(2,2),lmat = lmat,lhei=lhei,lwid=lwid,
+           cexRow=cexRow,cexCol=cexCol,col=col,
+           scale='none',trace='none',
+           cellnote=note, notecol='black',notecex=1.0,
+           colsep=c(1:ncol(data)),rowsep=c(1:nrow(data)),sepcolor='black',sepwidth=c(0.01, 0.01),
+           key.title=NA, keysize=0.06,
+           key.xlab='relative abundance',
+           dendrogram = 'row') #只保留行上的聚类树 dendrogram=c('both','row','column','none')
> dev.off()

至此,一张赏心悦目的热图就绘制好了。

怎么样,还符合你的心意否?

heatmap.2()还有许多好用之处,

大家可以自行?heatmap.2()查看更多详情。

本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请点击举报
打开APP,阅读全文并永久保存 查看更多类似文章
猜你喜欢
类似文章
R语言之heatmap.2篇
【R语言】热图绘制-heatmap+gplots配色方案
工具 | 用R快速制作heatmap图,一学就会!
热图 | TBtools Heatmap 从入门到精通
FIT文件转为PDF文件的方法
52种塔吊及参数介绍,你一定用的到!126页PDF可下载!
更多类似文章 >>
生活服务
热点新闻
分享 收藏 导长图 关注 下载文章
绑定账号成功
后续可登录账号畅享VIP特权!
如果VIP功能使用有故障,
可点击这里联系客服!

联系客服