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

2017-03-21 17:45

之前我们分享过R语言绘制热图(),用的是pheatmap包。其实画热图还可以用heatmap函数、ggplot2包、gplot包、lattice包来画,惊呆了吧~~

今天我们就分别来说说这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<-ggplot(temp1,aes(x=Var2,y=Var1,fill=value))+#指定横纵坐标、填充值

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度

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

(0)

相关推荐

  • ComplexHeatmap|绘制单个热图-I

    ComplexHeatmap可以绘制很复杂的热图,能满足日常以及文章所需,本次先简单的介绍单个热图绘制的内容. 单个热图由热图主体和热图组件组成.其中主体可分为行和列:组件可以是标题.树状图.矩阵名称 ...

  • 今天跟着我把热图学个遍,囊括所有需求

    用于绘制交互式和静态热图的R包和功能很多,包括: heatmap()[R基本函数,统计数据包]:绘制一个简单的热图 heatmap.2()[ gplots R包]:与R base函数相比,绘制了增强的 ...

  • 技术贴 | R语言:手把手教你画pheatmap热图

    导读: pheatmap默认会对输入矩阵数据的行和列同时进行聚类,但是也可以通过布尔型参数cluster_rows和cluster_cols设置是否对行或列进行聚类,具体看分析需求.利用display ...

  • 16s分析之差异展示(热图)

    前两天我向大家推了16s做差异分析的两个包(没有看的请点击下面链接): 1.16s分析之差异分析(DESeq2) 2.16s分析之差异OTU 挑选(edgeR) 差异做出来了如何展示,也是一个值得思考 ...

  • 多分组热图不用愁,Pheatmap来帮忙

    [Pheatmap 绘制多分组热图] 热图作为实验数据分布情况的直观展示方法,已经成为高分文章的不错选择,它不仅可以对数据质量进行具像化展示,还可以对数据和样品进行聚类.在R中有多个包均可绘制热图,今 ...

  • R数据分析:如何给结构方程画路径图,tidySEM包详解

    之前一直是用semPlot这个包给来进行结构方程模型的路径绘制,自从用了tidySEM这个包后就发现之前那个包不香了,今天就给大家分享一下tidySEM. 这个包的很大特点就是所有的画图原始都是存在数 ...

  • 绝美工笔芙蓉画35图,谁看了都说好!

    ............................................................................. 千林扫作一番黄,只有芙蓉独自芳.唤作拒霜知未 ...

  • 技术贴 | R语言:构建一个转录代谢互作调控网络:(二)热图的美化以及大样本分组信息的快速注释

    本文由可爱的乔巴根据实践经验而整理,希望对大家有帮助. 原创微文,欢迎转发转载. 导读 上期介绍了利用WGCNA包中的Cor函数和corPvalueStudent函数计算两组小样本的相关性并进行热图可 ...

  • 技术贴 | R语言:大样本多组学的相关性计算、热图绘制

    本文由可爱的乔巴根据实践经验而整理,希望对大家有帮助. 原创微文,欢迎转发转载. 导读 上期介绍了利用psych包计算两组小样本的相关性并进行热图可视化,但当样本数据量非常大时,psych包会耗费的时 ...

  • 技术贴 | R语言:小样本多组学的相关性计算、热图绘制

    本文由可爱的乔巴根据实践经验而整理,希望对大家有帮助. 原创微文,欢迎转发转载. 导读 在多组学数据关联挖掘中,在我们筛选到目标基因集以及目标蛋白质集合或目标代谢物集合后,在进行基因与蛋白质或代谢关联 ...

  • 技术贴 | R语言pheatmap聚类分析和热图

    本文由阿童木根据实践经验而整理,希望对大家有帮助. 原创微文,欢迎转发转载. 导读 pheatmap默认会对输入矩阵数据的行和列同时进行聚类,但是也可以通过布尔型参数cluster_rows和clus ...

  • R绘图笔记 | 热图绘制

    关于绘图,前面介绍了一些: R绘图笔记 | 一般的散点图绘制 R绘图笔记 | 柱状图绘制 R绘图笔记 | 直方图和核密度估计图的绘制 R绘图笔记 | 二维散点图与统计直方图组合 R绘图笔记 | 散点分 ...

  • 最简单最实用的R语言热图绘制教程(没有R基础-掌握只需10min)

    从R语言介绍与安装,再到出一个能看的热图 前面用Excel绘制热图,在熟练的情况下,操作起来其实还是比较快速和方便的,尤其对于具有代码恐惧症的朋友.教程发出去之后,即有收到消息,希望能写一个用R语言绘 ...