当前位置: 首页 > news >正文

R 语言绘制六种精美热图:转录组数据可视化实践(基于 pheatmap 包)

在转录组 Bulk 测序数据分析中,热图是展示基因表达模式、样本聚类关系的核心可视化工具。一张高质量的热图不仅能清晰呈现数据特征,更能提升研究成果的展示效果。本文基于 R 语言的pheatmap包,整理了六种适用于不同场景的热图绘制方法,涵盖基础聚类、分组对比、通路注释等需求,私信即可获取全部代码,方便科研人员快速实现数据可视化。

一、绘图前的数据准备

热图绘制的核心是基因表达矩阵,数据格式的规范性直接影响后续分析效果,需提前做好以下准备:

1.1 表达矩阵格式要求

表达矩阵需满足:

  • 第一列为基因名(后续将作为行名);
  • 从第二列开始为样本的基因表达值(FPKM、TPM 或 Counts 均可);
  • 第一行为样本名称(作为列名)。

示例格式如下(简化版):

GeneSymbolSample1Sample2...Sample60
GeneA12.315.6...8.9
GeneB3.22.1...5.7

1.2 数据读取与预处理

使用read.csv函数读取数据,注意保留基因名作为行名,避免样本名被自动修改:

# 读取表达矩阵(替换为实际文件路径)
data <- read.csv("gene_expression_matrix.csv", row.names = 1, check.names = FALSE)
# check.names = FALSE:避免样本名中的特殊字符(如“-”“.”)被自动转换

1.3 样本分组注释

根据研究设计定义样本分组(如正常组 / 疾病组、处理组 / 对照组等),用于后续热图的分组标记:

# 示例:30个正常组样本 + 30个疾病组样本(需根据实际样本数量修改)
sample_groups <- data.frame(Condition = factor(c(rep("Normal", 30), rep("Disease", 30))),  # 分组名称row.names = colnames(data)  # 样本名与表达矩阵列名对应
)

二、六种热图绘制方法

2.1 经典聚类热图(部分代码)

适用场景:初步展示基因表达模式与样本聚类关系,适合探索性分析。

通过行(基因)标准化消除表达量量级差异,结合聚类树展示基因与样本的相似性:

library(pheatmap)
library(RColorBrewer)pheatmap(data,color = colorRampPalette(rev(brewer.pal(11, "RdBu")))(100),  # 红蓝渐变配色(表达量高→红,低→蓝)scale = "row",  # 按行(基因)标准化

特点:通过颜色梯度直观展示基因表达高低,聚类树反映样本 / 基因的相似性。

2.2 分组注释热图(部分代码)

适用场景:需突出样本分组信息(如正常 / 疾病、处理 / 对照),增强组间差异的可视化效果。

在经典热图基础上添加样本分组注释条,通过颜色区分不同组别:

# 定义分组注释颜色(可根据需求调整色值)
annotation_colors <- list(Condition = c(Normal = "#4DBBD5",  # 正常组:浅蓝色Disease = "#E64B35") # 疾病组:红色
)pheatmap(data,color = colorRampPalette(rev(brewer.pal(11, "RdBu")))(100),scale = "row",

特点:通过顶部注释条清晰区分样本组别,便于观察组内聚类一致性与组间差异。

2.3 二元对比热图(部分代码)

适用场景:需突出基因在两组间的表达差异(如上调 / 下调),适合差异基因集的可视化。

使用多色渐变(蓝→白→红)强化表达量极端值的对比:

pheatmap(data,color = colorRampPalette(c("#2c7bb6", "#abd9e9", "#ffffbf", "#fdae61", "#d7191c"))(100),# 颜色梯度:深蓝(低表达)→浅蓝→白→浅红→深红(高表达)scale = "row",annotation_col = sample_groups,

特点:中间白色为基线,两端颜色强化高低表达差异,适合直观展示基因在两组中的表达趋势。

2.4 子集热图(前 20 个基因)(部分代码)

适用场景:聚焦核心基因(如 top 差异基因、关键通路基因),避免全基因集热图的冗余。

对基因集进行筛选(如取前 20 个),简化热图复杂度:

library(viridis)  # 需提前安装:install.packages("viridis")# 取前20个基因(可替换为按表达量/差异倍数筛选的基因)
top20_data <- data[1:20, ]pheatmap(top20_data,color = viridis(100),  # 青绿色系渐变(美观且适合色盲友好)scale = "row",

特点:聚焦关键基因,减少视觉干扰,适合突出核心基因的表达模式。

2.5 相关系数热图(部分代码)

适用场景:分析样本间或基因间的表达相关性,探索数据内部关联性。

基于表达矩阵计算相关系数(如 Pearson),再绘制热图:

# 计算样本间相关系数矩阵(列之间的相关性)
cor_matrix <- cor(t(data))  # t()转置:样本为行,计算样本间相关pheatmap(cor_matrix,color = colorRampPalette(rev(brewer.pal(9, "YlOrRd")))(100),  # 黄→红:相关性从低到高

特点:颜色越深表示相关性越高,可用于验证样本重复性(组内样本相关性应高于组间)。

2.6 通路注释热图(部分代码)

适用场景:展示基因所属功能通路(如 KEGG、GO 通路),关联表达模式与生物学功能。

需提前定义基因 - 通路对应关系,添加行注释(通路信息):

# 定义基因通路
gene_groups <- data.frame(Pathway = factor(sample(c("Pathway A", "Pathway B", "Pathway C"), nrow(data), replace = TRUE)),row.names = rownames(data)  # 基因名与表达矩阵行名对应
)# 定义通路注释颜色
pathway_colors <- list(Pathway = c("Pathway A" = "#7FC97F", "Pathway B" = "#BEAED4", "Pathway C" = "#FDC086")
)

特点:左侧添加通路注释条,可观察同一通路基因的表达模式一致性。

三、注意事项与优化建议

  1. 数据预处理:热图对异常值敏感,建议先通过scale参数(行 / 列标准化)消除量纲影响,或对表达矩阵进行 log2 转换(若数据未标准化)。

  2. 参数调整

    • show_rownames/show_colnames:基因 / 样本数量过多时建议设为FALSE,避免标签重叠;
    • treeheight_row/treeheight_col:调整聚类树高度,减少冗余空间;
    • fontsize:调整标签字体大小,优化可读性。
  3. 图片保存:通过filename参数保存高清图片:

    pheatmap(..., filename = "heatmap.png", width = 10, height = 8, dpi = 300)
    

以上六种热图覆盖了转录组数据分析中常见的可视化需求,可根据实际数据特点(如基因数量、分组类型)选择合适的方法。代码中涉及的参数可根据具体需求进一步调整,若有疑问或优化建议,欢迎留言交流。

http://www.dtcms.com/a/297893.html

相关文章:

  • 从零开始学习Dify-数据库数据可视化(五)
  • java的设计模式及代理模式
  • 负载均衡:提升业务性能的关键技术
  • Zabbix告警系统集成指南:从钉钉机器人到网易邮件的全流程配置
  • pytest-html 优势及与其他插件对比
  • 自动驾驶领域中的Python机器学习
  • VLA:自动驾驶的“新大脑”?
  • npm init vite-app runoob-vue3-test2 ,npm init vue@latest,指令区别
  • C语言第 9 天学习笔记:数组(二维数组与字符数组)
  • Java-Properties类和properties文件详解
  • 同声传译新突破!字节跳动发布 Seed LiveInterpret 2.0
  • 深入探索嵌入式仿真教学:以酒精测试仪实验为例的高效学习实践
  • C++常见面试题之一
  • win11平台上mysql 数据库迁移
  • 【C#补全计划:类和对象(七)—— 重写虚方法】
  • CMOS知识点 双阱工艺 三阱工艺
  • 大数据中心——解读60页IDC云数据中心机房运维服务解决方案【附全文阅读】
  • 【优选算法】链表
  • 2025.7.25 测试 总结
  • C/C++---I/O性能优化
  • ISAAC ROS 在Jetson Orin NX上的部署
  • 自动化UI测试工具TestComplete的AI双引擎:即时数据集 + 自愈测试
  • BGP负载均衡-9
  • C#观察者模式示例代码
  • Qt 拔网线等情况下收不到disconnected()信号
  • 数据结构之 【排序】(非递归实现快速排序)
  • 【Web安全】逻辑漏洞之URL跳转漏洞:原理、场景与防御
  • QEMU RISCV TCG 详解六 -- RISCV CPU 的使能(How a RISCV CPU Realized)
  • 算法:数组part02: 209. 长度最小的子数组 +
  • 视频孪生技术赋能仓储智慧化转型