You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.10 08:45:28