打开APP
userphoto
未登录

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

开通VIP
5个画热图的R包,你都知道吗?



今天我们就分别来说说这5个R包画热图的方法。先从heatmap函数说起。


一、heatmap函数

 

heatmap(temp,col=colorRampPalette(c('green','black','red'))(12),ColSideColors=colorRampPalette(c('green','black','red'))(12),Colv=NA,cexRow=0.8,cexCol=1.2)


Col指定热图所用颜色:

ColSideColors/RowSideColors代表列、行边是否显示颜色bar

ColV/RowV表示是否按照列/行聚类,默认均为真值

cexCol/cexRow分别表示列/行标签字体大小

scale=c('row','column','none')#设置是否归一化

margins=c(5,5)#设置热图下方及右方宽度

若热图中对于样本有多种分组,需要在行/列帝显示两行或多行颜色bar,可选择heatmap.plus或pheatmap包



二、pheatmap包


cellwidth、cellheigh t#小方格宽度、高度

scale='none' ##是否归一化

cluster_rows、cluster_cols #是否按行、列聚类

treeheight_row、treeheight_col #横向、纵向树高度

legend、annotation(设置分组)等高级选项见后面

display_numbers=TRUE #在小方格中显示数字


1、无参数结果如右图1

pheatmap(temp)


2、设置col、row方向的树高结果如右图2

pheatmap(temp,treeheight_row=120,treeheight_col=20))



3、单一方向聚类右图1

pheatmap(temp,treeheight_row=120,treeheight_col=20,cluster_cols=FALSE)


4、更改颜色右图2

pheatmap(temp,treeheight_row=120,treeheight_col,cluster_cols=FALSE,color=colorRampPalette(c('green','black','red'))(1000))



5、去掉方格边框、调节字体大小、保存右图1

pheatmap(temp,treeheight_row=120,treeheight_col=20,cluster_cols=FALSE,color=colorRampPalette(c('green','black','red'))(5),border_color=NA,fontsize=10,fontsize_row=8,fontsize_col=16,filename='fig1.pdf',width=6,height=14)

treeheight_col、treeheight_row分别为纵向、横向树形高度

border_color方格边框颜色

fontsize为所有字体大小,fontsize_row、fontsize_col分别为row、col方向标签字体大小



6、设置多个分组

pheatmap(temp,cluster_cols=FALSE,cluster_rows=TRUE,legend=TRUE,color=colorRampPalette(c('green','black','red'))(1000),border_color=FALSE,fontsize=10,fontsize_row=12,fontsize_col=12,annotation=anno,annotation_legend=TRUE,annotation_colors=anno_colors)

annotation是一个dataframe,它的每行代表一个列(样本)的信息,包括每一列(样本)所属的group名,它的colnames代表分组名,rownames为列(样本)名;annotation_colors是list,每个列表元素代表一个级别,包括分组中各组名称以及对应的颜色值。



7、不聚类

pheatmap(temp,cluster_col=FALSE,cluster_rows=FALSE,legend=FALSE,color=colorRampPalette(c('green','black','red'))(1000),border_color=TRUE,fontsize=10,fontsize_row=12,fontsize_col=12,filename='fig1.png',width=6,height=14)


8、不聚类、填充数字

pheatmap(temp,cluster_col=FALSE,cluster_rows=FALSE,legend=FALSE,color=colorRampPalette(c('green','black','red'))(1000),border_color=TRUE,fontsize=10,fontsize_row=12,fontsize_col=12,display_numbers=TRUE,number_format='%.2f',filename='fig1.png',width=6,height=14)



三、ggplot2包

可对热图进行聚类,但不可画树


所需包ggplot2、reshape2

library('ggplot2')

library('reshape2')

##首先分别对数据temp在行/列方向上聚类,并保存聚类后的行列顺序

hc=hclust(dist(temp))

row_order=hc$order

temp1=temp[row_order,] ###是否对行列进行聚类

temp1=melt(temp1) ###数据变换,从matrix到ggplot可以识别的类型

p<> #指定横纵坐标、填充值

xlab('')+ylab('')+labs(title='')+geom_tile(colour='white',size=0)+scale_fill_grandient(low='green',high='red')+ ###定义填充颜色

geom_text(aes(label=round(value,2)),angel=45,size=3) ###加数字

print(p)



四、gplots包heatmap.2


scale按行或列均一化('col'或'row'

Rowv、Colv是否对行、列聚类

dendrogram是否绘制树形(none、both、row、col

margins设置下方、右方label宽度(eg:margins=c(5,7))

ColSideColors,RowSideColors设置列、行分组颜色(颜色分别对应各列、各行


示例代码(右图):

library('gplots')

group=colorRampPalette(c('green','red'))(12)

#12种表示分组关系的颜色

heatmap.2(temp,col=redgreen,Colv=FALSE,ColSideColors=group,key=TRUE,symkey=FALSE,density.info='none',trace='none')


五、lattice包


所需包lattice、latticeExtra

colorkey=list(space='left',width=1.5) #设置颜色条的宽度和位置(top、left、right、bottom,但不可以与树形放置在同一侧

legend=list(...) #在图上的顶部或右部添加聚类树(仅可以在右方或上方加),并定义树形状(type参数指定:三角形triangle或矩形<默认>

levelplot(t(data),aspect='fill',...) ###data为matrix



示例代码(右图):

library('lattice')

library(latticeExtra)

hc=hclust(dist(temp)) ###按行聚类

dd.row=as.dendrogram(hc) ###保存行聚类树形

row.ord=order.dendrogram(dd.row) ###保存行聚类顺序

hc=hclust(dist(t(temp))) ###按列聚类

dd.col=as.dendrogram(hc) ###保存列聚类树形

col.rod=order.dendrogram(dd.col) ###保存列聚类顺序

temp1=temp[row.ord,] ###只对行聚类(是否对行、列聚类

levelplot(t(temp1),aspect='fill',colorkey=list(space='left',width=1.5),xlab='',ylab='',legend=list(right=list(fun=dendrogramGrob,args=list(x=dd.row,rod=row.ord,side='right',size=5)),

scales=list(x=list(rot=60)) ###x轴标签旋转60度



今天的干货分享到这里了,如果觉得鼓代码太麻烦了,可以试着用云平台的热图工具画呀(嘻嘻,不打个广告小编浑身不自在)。



本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请点击举报
打开APP,阅读全文并永久保存 查看更多类似文章
猜你喜欢
类似文章
【热】打开小程序,算一算2024你的财运
Pheatmap绘制热图(二)
画图专题 | 热图函数pheatmap()
超详细的热图绘制教程(5000余字),真正的保姆级教程
245热图展示微生物组的物种和功能丰度或有无、距离矩阵
本地绘制热图
16s分析之差异展示(热图)
更多类似文章 >>
生活服务
热点新闻
分享 收藏 导长图 关注 下载文章
绑定账号成功
后续可登录账号畅享VIP特权!
如果VIP功能使用有故障,
可点击这里联系客服!

联系客服