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.pswp.cn/diannao/93340.shtml
繁體地址,請注明出處:http://hk.pswp.cn/diannao/93340.shtml
英文地址,請注明出處:http://en.pswp.cn/diannao/93340.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

圖片PDF識別工具:掃描PDF文件批量OCR區域圖識別改名,識別大量PDF區域內容一次性改名

以下是使用“咕嘎批量OCR識別圖片PDF多區域內容重命名導出表格系統”進行操作的具體步驟&#xff1a;1. 打開工具并獲取區域坐標打開軟件后&#xff0c;選擇“PDF識別模式”。導入一個PDF文件作為樣本&#xff0c;框選需要提取文字的區域&#xff0c;并保存區域坐標。如果有多個…

中國汽車能源消耗量(2010-2024年)

1419中國汽車能源消耗量&#xff08;2010-2024年&#xff09;發文主題分布數據來源中華人民共和國工業和信息化部-中國汽車能源消耗量查詢中國汽車能源消耗量查詢 (miit.gov.cn)時間跨度2010-2024年數據范圍全國汽車企業數據指標本數據集包含包含傳統汽車能源消耗量數據以及新能…

Python 實現服務器自動故障處理工具:從監控到自愈的完整方案

在服務器運維過程中,80% 的故障都是重復性的簡單問題(如磁盤空間不足、內存泄漏、服務進程掛掉等)。本文將介紹如何使用 Python 開發一款輕量級自動故障處理工具,通過狀態監控、異常診斷、自動修復三個核心模塊,實現服務器常見故障的無人值守處理。 核心依賴庫 psutil:跨…

圖片上傳 el+node后端+數據庫

模版部分&#xff1a;鼠標懸浮到頭像的部分就出現下拉框顯示可以修改頭像&#xff0c;el-upload是隱藏的&#xff0c;可能只是為了實現on-change函數和before-upload函數吧這塊做的確實有點馬虎了。<div class"r-content"><el-dropdown><span class&q…

[java 常用類API] 新手小白的編程字典

目錄 1.API 1.1定義: 2.Object類 2.1 toString() 方法 2.2 equals() 方法 3. Arrays 類 3.1 equals() 方法 3.2 sort() 方法 3.2.1排序 3.2.2 自定義對象排序 3.3 binarySearch() 方法 3.4 copyOf() 方法 3.5 fill() 方法 3.6 toString() 方法 4.基本數據類型包裝類 4.…

去除視頻字幕 2, 使用 PaddleOCR 選取圖片中的字幕區域, 根據像素大小 + 形狀輪廓

有人問我在搞什么&#xff1a;就是做這里的第2步。問題描述這里誤導&#xff0c;誤判&#xff0c;太嚴重了。如果我把這個區域當做是 mask ,那么真正的目標會被去除掉還有什么建議嗎&#xff1f;比如我能否根據這個mask 的大致形狀來判斷它是不是字幕&#xff0c; 如果不是細長…

Ubuntu 連接Visual SVN

Windows服務器上的svn倉庫為&#xff1a; https://ldw_online:8443/svn/OnlineRepository/LVC IP地址為192.168.8.8 4. 從 Ubuntu 測試連通性 在 Ubuntu 上可以用&#xff1a; bash 復制編輯 curl -vk https://192.168.8.8:8443/ 如果返回 HTTP 頭或 SSL 握手成功&#xff…

JAVA:Spring Boot 集成 Protobuf 的技術指南

?? 1、簡述 在分布式服務通信中,數據序列化與反序列化的效率對系統性能影響極大。Protocol Buffers(Protobuf) 是由 Google 提出的一種高效的結構化數據序列化協議,具有: ?? 高性能(遠優于 JSON/XML) ?? 跨語言支持 ?? 較小的體積 本篇將帶你了解如何在 Spring…

SQLServer內存釋放工具介紹:一款實用的數據庫性能優化助手

SQLServer內存釋放工具介紹&#xff1a;一款實用的數據庫性能優化助手 去發現同類優質開源項目:https://gitcode.com/ 在數據庫管理中&#xff0c;內存釋放是優化服務器性能的重要環節。本文將為您詳細介紹一款名為SQLServer內存釋放工具的開源項目&#xff0c;幫助您輕松管理…

《藍耘容器全棧技術指南:企業級云原生與異構計算實戰大全》

&#x1f31f; 嗨&#xff0c;我是Lethehong&#xff01;&#x1f31f; &#x1f30d; 立志在堅不欲說&#xff0c;成功在久不在速&#x1f30d; &#x1f680; 歡迎關注&#xff1a;&#x1f44d;點贊??留言收藏&#x1f680; &#x1f340;歡迎使用&#xff1a;小智初學計…

計算器3.0:實現用戶自定義組件

前言&#xff1a; 馬總給我提出計算器3.0新需求&#xff1a;可以在頁面上輸入一個組件&#xff0c;用戶的組件庫里面就多一個組件&#xff0c;用戶就可以使用 一、解決方法&#xff1a; 1. 新增成員變量和初始化 // 新增的輸入框 private InputBox newInputBox; // 新增的組…

PIG AI 全新升級:全新 MCP 能力加持,讓企業級 AI 開發效率翻倍!

你是否曾為 AI 應用的開發門檻而頭疼?調試代碼耗費數小時、集成外部工具需要復雜配置、想要快速構建智能系統卻不知從何下手…別擔心!PIG AI 最新版本帶來的 MCP(Model Context Protocol)能力,正為這些問題提供一站式解決方案。本文將帶你深入淺出地了解這一重磅升級,手把…

Springboot+vue超市管理系統的設計與實現

文章目錄前言詳細視頻演示具體實現截圖后端框架SpringBoot前端框架Vue持久層框架MyBaits成功系統案例&#xff1a;代碼參考數據庫源碼獲取前言 博主介紹:CSDN特邀作者、985高校計算機專業畢業、現任某互聯網大廠高級全棧開發工程師、Gitee/掘金/華為云/阿里云/GitHub等平臺持續…

一文快速了解Docker和命令詳解

本文讓你快速了解Docker是什么的東西&#xff0c;在我們程序開發的時候到底有什么作用&#xff0c;為什么需要去學習它。本文章只是做一個簡單的概述配套黑馬課程讓你快速了解、使用Docker。 一、什么是Docker&#xff1f; Docker是一個開源的容器化平臺&#xff0c;允許開發者…

【GaussDB】如何從GaussDB發布包中提取出內核二進制文件

【GaussDB】如何從GaussDB發布包中提取出內核二進制文件 背景 GaussDB 從505和506版本起&#xff08;前面的版本不清楚&#xff09;&#xff0c;華為官方不再提供用腳本安裝GaussDB的方式&#xff08;應該是基于運維交付標準化的角度考慮&#xff09;&#xff0c;僅支持使用T…

ETH 交易流程深度技術詳解

概述在前面對 PolkaVM 和 Revive 的文章中&#xff0c;我們介紹了很多技術細節&#xff0c;開發工具。還對比 EVM&#xff0c;知道了 PolkaVM 的優勢。很多同學還是對 Polkadot SDK 為什么可以運行 EVM 兼容的智能合約&#xff0c;以及交易處理的整個流程不太清楚。這篇文章將會…

【算法訓練營Day17】二叉樹part7

文章目錄二叉樹的最近公共祖先二叉搜索樹的最近公共祖先二叉搜索樹中的插入操作刪除二叉搜索樹中的節點二叉樹的最近公共祖先 題目鏈接&#xff1a;236. 二叉樹的最近公共祖先 解題邏輯&#xff1a; 最近公共祖先的定義為&#xff1a;對于有根樹 T 的兩個節點 p、q&#xff0c…

Vue插件與組件核心區別詳解

在 Vue 中&#xff0c;插件&#xff08;Plugin&#xff09; 和 組件&#xff08;Component&#xff09; 是兩種不同層次的概念&#xff0c;它們的主要區別如下&#xff1a;1. 組件 (Component) 定義&#xff1a; Vue 應用的基本構建單元&#xff0c;是可復用的 Vue 實例&#x…

基礎NLP | 02 深度學習基本原理

文章目錄 深度學習基本原理 數學基礎 線代 numpy 常用操作 導數, 梯度 梯度下降法 梯度下降代碼 GradientDescent.py 反向傳播 完整的反向傳播過程 權重更新方式 pytorch 網絡結構 全連接層 (線性層) 例子 - 手動實現模擬一個線性層 DNNforward.py 激活函數 激活函數-Sigmoid…

MySQL面試題及詳細答案 155道(001-020)

《前后端面試題》專欄集合了前后端各個知識模塊的面試題&#xff0c;包括html&#xff0c;javascript&#xff0c;css&#xff0c;vue&#xff0c;react&#xff0c;java&#xff0c;Openlayers&#xff0c;leaflet&#xff0c;cesium&#xff0c;mapboxGL&#xff0c;threejs&…