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

如何为Seurat DimHeatmap函数生成的图表添加对应图例

Seurat包DimHeatmap添加PCA取值对应图例的实现方法

没有适配所有Seurat可视化图表的统一图例添加方案,不同Seurat绘图函数的底层渲染逻辑有差异,针对DimHeatmap添加对应PCA组分取值的颜色图例,可直接用以下两种方案实现:

方案1:原生参数调整(最简便)

Seurat v4及以上版本的DimHeatmap内置了图例显示控制参数,默认状态下图例是关闭的,你只需要在原有代码中补充两个参数即可:

  • raster = FALSE:关闭栅格化渲染,避免连续图例显示异常
  • legend = TRUE:开启颜色标尺图例,图例颜色会自动对应PCA组分的取值高低
    修改后的可直接运行代码如下:
DimHeatmap(norm_data3, 
           dims = 1, 
           cells = 500, 
           balanced = TRUE,
           raster = FALSE,
           legend = TRUE)

注意:Seurat v3及更早的老版本中,DimHeatmap底层基于基础绘图系统实现,不支持原生渲染ggplot风格的连续值图例,这种情况请使用第二种自定义绘制方案。

方案2:提取数据自定义绘制(灵活度最高)

如果原生参数生成的图例不符合排版要求,比如需要修改图例颜色、位置、标注规则,可以先提取DimHeatmap绘图用到的所有中间数据,再用热图包自行绘制,完全自定义图例样式:

  1. 首先提取绘图所需的PC得分、目标细胞、表达矩阵数据
# 提取PCA降维结果中对应维度的细胞得分
pc1_scores <- Embeddings(norm_data3, reduction = "pca")[, 1]
# 按照DimHeatmap的balanced参数逻辑,取PC1得分最高和最低的各250个细胞,共500个
sorted_cell_names <- names(sort(pc1_scores, decreasing = TRUE))
plot_cells <- c(head(sorted_cell_names, 250), tail(sorted_cell_names, 250))
# 提取高变基因在目标细胞中的归一化表达矩阵作为热图输入
plot_exp_matrix <- GetAssayData(norm_data3, assay = "RNA", layer = "data")[VariableFeatures(norm_data3), plot_cells]
  1. 用pheatmap绘制带自定义PC取值图例的热图
library(pheatmap)
# 构造细胞层面的PC得分注释
cell_annotation <- data.frame(PC1得分 = pc1_scores[plot_cells])
rownames(cell_annotation) <- plot_cells

pheatmap(plot_exp_matrix,
         cluster_rows = F,
         cluster_cols = F,
         show_colnames = F,
         scale = "row",
         annotation_col = cell_annotation, # 自动生成对应PC1取值的连续颜色图例
         main = "PC1维度热图")

如果需要调整图例的配色、刻度、显示位置,直接修改pheatmap的annotation_colors、legend_breaks、legend_pos等参数即可,可定制性远高于原生DimHeatmap函数。

内容的提问来源于stack exchange,提问作者algebroo

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.27 21:54:33