ComplexHeatmap热图绘制 | 指定基因在热图中标记


如想获得图例代码和数据,请到公众号“小杜的生信筆記”中回复“20220117”,链接有效期2022.17-2022.2.17(特别申明:该数据仅是演示数据,无任何意义)


教程详细讲解:
01:热图添加指定的基因标记(代码重现)| 收藏 - 知乎
02:热图添加指定的基因标记(代码重现)-公众号


来源:基迪奥生信平台-热图添加指定基因

高分文章图例

image

image

一、绘图

导入相关的包

ComplexHeatmap在线帮助文档:https://jokergoo.github.io/ComplexHeatmap-reference/book/
#从Bioconductor安装稳定版;
if (!requireNamespace("BiocManager", quietly = TRUE))
  install.packages("BiocManager")
#安装ComplexHeatmap包;
BiocManager::install("ComplexHeatmap")
#载入ComplexHeatmap和circlize包;
library(ComplexHeatmap)
library(circlize)

导入数据

## 导入数据
df <- read.table("heatmap_inputdata.txt", header = T, row.names = 1)
head(df)
> head(df)
       Control_01 Control_02 Control_03 Treat_01 Treat_02 Treat_03
gene01         11         11         11       10       11       10
gene02         14         14         14       13       14       13
gene03         14         14         14       13       14       13
gene04          7          7          7        6        7        6
gene05         11         11         11       11       11       10
gene06         14         14         14       13       14       12

归一化数据

#对数据进行归一化;
#由于scale函数默认对列进行归一化,因此这里做了两次转置;
df_scaled <- t(scale(t(df)))
#查看归一化后的数据前6行;
head(df_scaled)

绘制基础型热图

#初步尝试绘制热图;
Heatmap(df_scaled,row_names_gp = gpar(fontsize = 6)
        ,column_names_gp = gpar(fontsize = 8),
        name = "Exp")
image

计算数据范围大小


#接下来计算获得数据的大小范围;
range(df_scaled)

然后,根据数据范围建立自定义颜色映射关系;

#green-red;
col_fun = colorRamp2(c(-2,0,2), c("greenyellow","white", "red"))
#green-purple;
col_fun = colorRamp2(c(-2,0,2), c("greenyellow","white", "purple"))
#purple-orange;
col_fun = colorRamp2(c(-2,0,2), c("purple","white", "orange"))

#使用自定义渐变色绘制热图;
Heatmap(df_scaled,row_names_gp = gpar(fontsize = 6),
        column_names_gp = gpar(fontsize = 8),
        col = col_fun,
        name = "Exp")

CompleHeatmap 中相关的参数


#隐藏行聚类树;
Heatmap(df_scaled,row_names_gp = gpar(fontsize = 6),
        column_names_gp = gpar(fontsize = 8),
        col = col_fun,
        # show_row_dend = FALSE,     ## 隐藏行聚类
        # show_column_dend = FALSE,  ## 隐藏列聚类
        show_row_names = FALSE,    ## 隐藏行名
        # show_column_names = FALSE, ## 隐藏列名
        name = "Exp")

heatmap_legend_param参数设定图例的格式(标题,位置,方向,高度等)
Heatmap(df_scaled, 
        heatmap_legend_param = list(title= "legend",               ## 标题
                                    title_position = "",  ## 位置
                                    legend_height=unit(4,"cm"),    ## 高度
                                    legend_direction="vertical"))  ## 方向、vertical竖直,horizontal横直
# title = , 标题
# title_position = 位置
# 'arg'应当是“topleft”, “topcenter”, “leftcenter”, “lefttop”, “leftcenter-rot”, “lefttop-rot”

# legend_height = , 图例高度
legend_direction= 图例方向,vertical竖直,horizontal横直
row_title和column_title参数设定行和列的标题
Heatmap(df_scaled,
        row_title = "Test_data",    # 列的标题
        column_title = "Test_data") # 行的标题


clustering_distance_rows参数设定行聚类的距离方法,默认为"euclidean"

Heatmap(df_scaled, clustering_distance_rows = function(x) dist(x))

Heatmap(df_scaled, clustering_distance_rows = function(x, y) 1 - cor(x, y))

clustering_method_rows参数设定行聚类的方法,默认为"complete", "single"


Heatmap(df_scaled, clustering_method_rows = "complete")

row_dend_side参数设定行聚类树放置的位置

Heatmap(df_scaled, row_dend_side = "right")

km参数设定对行进行kmeans聚类分组的类数

Heatmap(df_scaled, km = 4, row_title_gp = gpar(col=rainbow(4)), 
        row_names_gp = gpar(col=rainbow(4), fontsize=20),
        show_row_names = F)

使用add_heatmap函数组合多个热图或注释信息

add_heatmap(h1, h2)

添加小图形

## # 添加point注释信息
ha = HeatmapAnnotation(points = anno_points(1:217,  ## 你的基因数量
                                            which = "row",
                                            gp= gpar(col=rainbow(12))))
add_heatmap(h1, ha)

添加barplot注释信息

ha = HeatmapAnnotation(barplot = anno_barplot(1:217, 
                                             which = "row", 
                                             bar_width=0.4, 
                                             gp= gpar(fill="red")),which = "row")
add_heatmap(h1, ha)

生成分组颜色条注释;

#生成分组颜色条注释;
class = anno_block(gp = gpar(fill = c("#c77cff","#FF9999","#99CC00","#FF9900"),
                            col="white"),height = unit(5, "mm"),
                  labels = c("TESA", "TESB", "TESD","TESC"),
                  labels_gp = gpar(col = "white", fontsize = 8,fontface="bold"))
group= HeatmapAnnotation(group=class)
##-----------------------------------------------------------------------------

#为热图添加分组颜色条;
Heatmap(df_scaled,
       row_names_gp = gpar(fontsize = 6),
       column_names_gp = gpar(fontsize = 8),
       col = col_fun,
       column_split = 4,
       column_title = NULL,
       cluster_rows = TRUE,
       show_row_dend = FALSE,
       show_row_names = FALSE,
       top_annotation =group,
       name = "Exp")
image

“小杜的生信筆記” 公众号知乎简书平台,主要发表或收录生物信息学的教程,以及基于R的分析和可视化(包括数据分析,图形绘制等);分享感兴趣的文献和学习资料!

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

推荐阅读更多精彩内容