如何在R语言中绘制顶部带有柱状图的热图?
在R语言中绘制顶部带柱状图的热图
可以用ComplexHeatmap包实现这种组合可视化,它专门用于构建复杂热图及多图组合,具体步骤如下:
1. 准备数据
先把你提供的数据整理成R可处理的格式:
# 构造数据框 gene_data <- data.frame( `Gene name` = paste0("Gene", 1:16), log2FC = c(0.230749533, 0.070357349, -0.239713974, 0.703365372, 0.327406476, 0.788362186, -0.145366946, 0.193414478, -0.427479686, -0.548639578, -0.227693913, 0.007319619, -0.282273491, -0.127434584, -0.465189842, 0.075561033), `Alteration frequency` = c(2.91, 1.64, 1.91, 0.82, 2.37, 2.18, 1.73, 16.11, 1.55, 1.18, 5.46, 0.82, 1.55, 9.55, 0.82, 0.82) ) # 将基因名设为行名,适配热图格式 rownames(gene_data) <- gene_data$`Gene name` # 提取log2FC作为热图的数值矩阵 heat_mat <- as.matrix(gene_data[, "log2FC", drop = FALSE]) # 提取突变频率作为顶部柱状图的数据 bar_data <- gene_data$`Alteration frequency` names(bar_data) <- rownames(gene_data)
2. 安装并加载依赖包
如果未安装过相关包,先执行安装命令:
install.packages(c("ComplexHeatmap", "circlize"))
加载所需包:
library(ComplexHeatmap) library(circlize)
3. 设置颜色映射
为热图的log2FC值设置渐变配色(负数值用蓝色,正数值用红色):
col_fun <- colorRamp2( c(min(gene_data$log2FC), 0, max(gene_data$log2FC)), c("#1f78b4", "white", "#e31a1c") )
4. 构建顶部柱状图注释
把突变频率做成热图顶部的柱状图组件:
top_annotation <- HeatmapAnnotation( `Alteration frequency` = anno_barplot( bar_data, height = unit(2, "cm"), # 控制柱状图高度 border = FALSE, gp = gpar(fill = "#6baed6") # 设置柱状图填充色 ) )
5. 绘制组合热图
将热图与顶部柱状图组合输出:
Heatmap( heat_mat, name = "log2FC", # 热图例标题 top_annotation = top_annotation, col = col_fun, row_names_gp = gpar(fontsize = 10), # 调整基因名字体大小 column_names_gp = gpar(fontsize = 10), # 调整列名字体大小 heatmap_legend_param = list(title_position = "leftcenter-rot") # 优化图例标题位置 )
运行以上代码后,就能得到你需要的顶部带柱状图的热图:热图区域展示每个基因的log2FC值,顶部柱状图对应展示该基因的突变频率。
内容的提问来源于stack exchange,提问作者zahra abdi
相关产品推荐
相关产品推荐

