R语言ComplexHeatmap绘制复杂热图heatmap_第1页
R语言ComplexHeatmap绘制复杂热图heatmap_第2页
R语言ComplexHeatmap绘制复杂热图heatmap_第3页
R语言ComplexHeatmap绘制复杂热图heatmap_第4页
R语言ComplexHeatmap绘制复杂热图heatmap_第5页
已阅读5页,还剩7页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

第R语言ComplexHeatmap绘制复杂热图heatmap目录一载入R包数据1.1载入ComplexHeatmap包,数据1.2绘制最简单的热图二常见表型注释读入注释文件2.1添加注释,且设置颜色三添加块注释3.1k-means指定K个数3.2先验知识知道样本分为几个簇3.3根据富集结果添加行注释四目标基因分析4.1标签展示目标基因4.2绘制目标基因热图ComplexHeatmap|绘制单个热图介绍了单个热图绘制的内容

一载入R包数据

1.1载入ComplexHeatmap包,数据

为更贴近生信使用场景,直接使用内置的基因表达数据

library(ComplexHeatmap)

expr=readRDS(paste0(system.file(package="ComplexHeatmap"),"/extdata/gene_expression.rds"))

#查看数据

str(expr)

expr[1:4,c(1:4,25:27)]

拿到一个新数据后,除了检查[1:4,1:4]外,也许还需要看看最后几列,另外还需要观察列名称的规律。

去除最后几列,或者只选取列名字包含cell的(TCGA数据处理中也会经常遇到)

mat=as.matrix(expr[,grep("cell",colnames(expr))])

1.2绘制最简单的热图

Heatmap(mat)

二常见表型注释

文献中经常见到的就是在热图的top或者bottom位置添加样本的变异信息,临床信息等的注释,本节介绍如何实现以及常见的设置。

读入注释文件

anno-read.csv("anno.csv",header=T)#非真实数据,随便设置

head(anno)samplestageage#1s1_cell01156#2s2_cell02243#3s3_cell03263#4s4_cell01323#5s5_cell0218#6s6_cell0333

2.1添加注释,且设置颜色

2.1.1颜色设置

1)连续变量:指定色系,根据变量范围设置颜色范围

col_fun2-colorRamp2(

c(0,50,100),#根据值的范围设置

c("#ff7f00","white","#1f78b4")

)

2)分类变量:直接指定颜色编码

#stage=c("1"="red","2"="green","3"="blue","4"="orange")#分类

2.1.2添加注释

使用HeatmapAnnotation函数进行注释,添加待注释的内容

ha-HeatmapAnnotation(

age=anno$age,

stage=anno$stage,

col=list(

age=col_fun2,#连续

stage=c("1"="red","2"="green","3"="blue","4"="orange")#分类

)

1)注释位置

Heatmap(

mat,

top_annotation=ha

)

热图上面注释样本的临床等信息,实现!

2)指定多个注释位置

当需要注释的内容较多时候,可以选择在不同的位置。需要预先根据待注释的位置进行指定

column_ha-HeatmapAnnotation(

bar1=anno_barplot(runif(24))

row_ha-rowAnnotation(

bar2=expr$chr

Heatmap(

mat,

show_row_names=F,

#cluster_rows=F,

top_annotation=ha,

bottom_annotation=column_ha,#对应的注释

right_annotation=row_ha

)

其他常用调整的函数

三添加块注释

常见的是根据聚类(kmeans等)或者先验知识分为几个簇,然后对簇进行注释。

3.1k-means指定K个数

1)样本设置分为4组,基因分为3组,同时设置每个簇的颜色和标签

set.seed(1234)

Heatmap(mat,

top_annotation=HeatmapAnnotation(foo=anno_block(gp=gpar(fill=1:4),

labels=c("group1","group2","group3","group4"),

labels_gp=gpar(col="white",fontsize=10))),

column_km=4,#列分为4个k

left_annotation=rowAnnotation(foo=anno_block(gp=gpar(fill=2:4),

labels=c("group1","group2","group3"),

labels_gp=gpar(col="white",fontsize=10))),

row_km=3,#

show_row_names=F

)

2)设置text的颜色

Heatmap(mat,

top_annotation=HeatmapAnnotation(foo=anno_block(gp=gpar(fill=1:4),

labels=c("group1","group2","group3","group4"),

labels_gp=gpar(col="white",fontsize=10))),

column_km=4,

left_annotation=rowAnnotation(foo=anno_block(gp=gpar(fill=2:4),

labels=c("group1","group2","group3"),

labels_gp=gpar(col="white",fontsize=10))),

row_km=3,

show_row_names=F,

row_title_gp=gpar(

col=rainbow(5)[2:4],

font=1:3

row_names_gp=gpar(

col=rainbow(5)[2:4],

fontsize=10:12

column_title_gp=gpar(

fill=rainbow(5)[1:4],

alpha=0.5

column_names_gp=gpar(

col=rainbow(5)[1:4]

)

关于颜色可选#rainbow,heat.colors,terrain.colors,topo.colors,cm.colors

3.2先验知识知道样本分为几个簇

指定样本添加列注释,假设mat中的24个样本,已知是分别为10个,10个和4个的三组。

实际应用中可以根据年龄段,性别,临床分析,预后评分等指标进行的分组。

split=c(rep(c("A","B"),10),rep("C",4))

ha=HeatmapAnnotation(foo=anno_block(gp=gpar(fill=2:6),labels=c("AA","BB","CC")))

col_fun=colorRamp2(c(0,5,10,20),c("white","cornflowerblue","yellow","red"))

使用column_split函数即可按照指定拆分

Heatmap(mat,

name="mat_cluster",

column_split=split,

top_annotation=ha,

cluster_rows=T,

cluster_columns=F,

#rect_gp=gpar(col="white"),#添加白色格子线

column_title=NULL)

3.3根据富集结果添加行注释

文献中经常见到一些基因富集的通路作为行注释的图,怎么实现呢?

1)自定义通路结果(也可以是其他想展示的内容)

group-list(

A="Cellcycle",

B="Mismatchrepair",

C="DNAreplication"

)

2)添加空白注释

ha=rowAnnotation(

foo=anno_empty(

border=FALSE,

#计算空白注释的宽度

width=max_text_width(unlist(group))+unit(4,"mm"))

)

3)通过向量拆分对应的行和列

Heatmap(mat,name="mat",

#cluster_rows=T,

show_row_names=F,

right_annotation=ha,

row_split=c(rep(c("A","B"),30),rep("C",95)),

column_split=rep(c("C","D"),12))

4)添加注释块以及注释文本

for(iin1:3){

decorate_annotation(

"foo",

#选择热图块

slice=i,{

#添加颜色框

grid.rect(

x=0,

width=unit(2,"mm"),

gp=gpar(

fill=rainbow(3)[i],

col=NA

just="left"

#绘制文本

grid.text(

group[[i]],

x=unit(4,"mm"),

gp=gpar(

col=rainbow(3)[i]

just="left")

}

需要注意的是这里需要对应好,各位有更好的方法希望不吝告知。

四目标基因分析

4.1标签展示目标基因

使用anno_mark()函数展示目标基因,至少需要两个参数,通过at提供原始数据矩阵的索引,labels为相应的文本标记。

1)读取待展示的基因名称,也可以是geneList的向量

name-read.table('name.txt',header=T,s=FALSE)

head(name)

#gene#1gene3#2gene53#3gene6#4gene78#5gene7#6gene9

2)获取目标基因对应的矩阵位置;

genelist-name$gene

index-which(rownames(mat)%in%genelist)

#得到对应的文本标签;

labs-rownames(mat)[index]

3)使用labels_gp调整字体大小;

lab2=rowAnnotation(foo=anno_mark(at=index,

labels=labs,

labels_gp=gpar(fontsize=8),

lines_gp=gpar()))

标签展示目标基因

Heatmap(mat,name="mat",

cluster_rows=T,

right_annotation=lab2,

row_names_side="right",

show_row_names=F,

row_names_gp=gpar(fontsize=4))

4.2绘制目标基因热图

大部分热图存在基因太多的情况,重点展示目的基因。

heatmap4-Heatmap(

mat,name="expression"

he

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

最新文档

评论

0/150

提交评论