【R画图】环形热图

热图(heatmap)在生信领域基本就是常规操作,基本技能,入门操作。能画热图的工具也有很多,我自己常用的R包是pheatmap。

最近经常看见环状的热图,所以就搜了一下资料学习一下,测试一下。

环状热图我也经常会在论文中看到,用法和热图相同,但更适合于需要展示较多基因(数据)时来使用。

===安装=====

install.packages("circlize")

install.packages("ComplexHeatmap")

library('ComplexHeatmap')

library('circlize')

===测试===

data<-read.table("expression.txt",header=T,row.names=1)

head(data)

//转化为矩阵并对其进行归一化

madt<-as.matrix(data)

madt2<-t(scale(t(madt)))

Heatmap(madt2)     //这就是默认参数,普通的热图

range(madt2)   //查看值的分布

mycol=colorRamp2(c(-1.7, 0.3, 2.3),c("blue", "white", "red")) //定义颜色范围

circos.heatmap(madt2,col=mycol)  //默认参数

注:

circos.clear()  //绘制完成后需要使用此函数完全清除布局

circos.par(gap.after=c(50))    //

调整圆环首尾间的距离,数值越大,距离越宽

circos.heatmap(madt2,col=mycol, dend.side="inside",rownames.side="outside",rownames.col="black",rownames.cex=0.9,rownames.font=1,cluster=TRUE)

注:dend.side:控制行聚类树的方向,inside为显示在圆环内圈,outside为显示在圆环外圈

#rownames.side:控制矩阵行名的方向,与dend.side相同;但注意二者不能在同一侧,必须一内一外

#cluster=TRUE为对行聚类,cluster=FALSE则不显示聚类

下面是换了inside和outside的结果:

===聚类树的调整和美化(需要用到两个别的包)===

install.packages("dendextend")     //改颜色

install.packages("dendsort")          //聚类树回调

library(dendextend)

library(dendsort)

circos.par(gap.after=c(50))

circos.heatmap(madt2,col=mycol,dend.side="inside",rownames.side="outside",track.height=0.38,rownames.col="black",rownames.cex=0.9,rownames.font=1,cluster=TRUE,dend.track.height=0.18,dend.callback=function(dend,m,si){color_branches(dend,k=15,col=1:15)})

注:track.height:轨道的高度,数值越大圆环越粗  dend.track.height:调整行聚类树的高度  dend.callback:用于聚类树的回调,当需要对聚类树进行重新排序,或者添加颜色时使用

包含的三个参数:dend:当前扇区的树状图;m:当前扇区对应的子矩阵;si:当前扇区的名称   color_branches():修改聚类树颜色

circos.clear()

//添加图例标签等

lg=Legend(title="Exp",col_fun=mycol,direction= c("vertical"))

grid.draw(lg)

//添加列名

circos.track(track.index=get.current.track.index(),panel.fun=function(x,y)

{

if(CELL_META$sector.numeric.index==1)

{

cn=colnames(madt2)

n=length(cn)

circos.text(rep(CELL_META$cell.xlim[2],n)+convert_x(0.3,"mm"), //x坐标

4.1+(1:n)*0.7, //y坐标和间距

cn,cex=0.8,adj=c(0,1),facing="inside")

}

},bg.border=NA)

mycol2=colorRamp2(c(-1.7, 0.5, 2.3),c("#57ab81", "white", "#ff9600"))

也可以更改上面的颜色,从而改变热图的配色:

===分组热图绘制========

#circos.heatmap()内只能是一个矩阵,但如果矩阵数据存在分组,可以用split参数来指定分类变量

split = sample(letters[1:2], 40, replace = TRUE)

split = factor(split, levels = letters[1:2])

circos.clear()

circos.par(gap.after=c(22))

circos.heatmap(madt2,col=mycol,split=split,dend.side="inside",rownames.side="outside",track.height = 0.38,

rownames.col="black",rownames.cex=0.9,

rownames.font=1,

cluster=TRUE,

dend.track.height=0.18,

dend.callback=function(dend,m,si) 

{

color_branches(dend,k=15,col=1:15)

}

)

//假设有两个热图的矩阵数据

madt2<-t(scale(t(madt)))

madt3<-t(scale(t(madt)))

split2 = sample(letters[1:2], 40, replace = TRUE)

split2 = factor(split2, levels = letters[1:2])

circos.clear()

circos.par(gap.after=c(8))

circos.heatmap(madt2,col=mycol2,split=split2,dend.side="outside",

cluster=TRUE,

dend.track.height=0.2,

dend.callback=function(dend,m,si) {

color_branches(dend,k=15,col=1:15)

}

)

circos.heatmap(madt3, col = mycol,rownames.side="inside",rownames.cex=0.8)

本文使用 文章同步助手 同步

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 203,230评论 5 476
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 85,261评论 2 380
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 150,089评论 0 336
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,542评论 1 273
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,542评论 5 365
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,544评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,922评论 3 395
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,578评论 0 257
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,816评论 1 296
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,576评论 2 320
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,658评论 1 329
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,359评论 4 318
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,937评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,920评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,156评论 1 259
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 42,859评论 2 349
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,381评论 2 342

推荐阅读更多精彩内容