ComplexHeatmap |理解绘图逻辑绘制热图
作者:嚴濤 浙江大學作物遺傳育種在讀研究生(生物信息學方向)偽碼農,R語言愛好者,愛開源。
之前熱圖三部曲介紹了使用ggplot2和pheatmp繪制熱圖
R語言學習 - 熱圖繪制 (heatmap)??
R語言學習 - 熱圖美化??
R語言學習 - 熱圖簡化
后來2017年最后學習1010個熱圖繪制方法簡略介紹了10種熱圖繪制方式,CIRCOS增加熱圖、點圖、線圖和區塊屬性是另一種形式的熱圖。當然最簡單的還是使用高顏值可定制在線繪圖工具-第三版直接在線繪制。
知識學雜了也可以融會貫通,下面看看的Complexheatmap繪圖邏輯,應該會對理解數據、圖形、程序有些新的體會。
簡介
Complexheatmap是由DKFZ的顧祖光博士創建的繪制熱圖的R包,基于繪圖系統grid,因此如果有相應grid的知識,學習起來應該更順手。在他的GitHub有十分詳細的說明
(https://github.com/jokergoo/ComplexHeatmap)。
設計
Complexheatmap提供了一套非常靈活的方法用于多熱圖也就是熱圖列表布局以及支持自定義注釋繪圖,一個熱圖列表包含若干熱圖以及注釋信息。
繪制單個熱圖
安裝
包的安裝就不細說了,R語言學習 - 基礎概念和矩陣操作中有詳細的教程,下面直接給出安裝代碼。
# installed from bioconductor source("http://bioconductor.org/biocLite.R") options(BioC_mirror="http://mirrors.ustc.edu.cn/bioc/") biocLite("ComplexHeatmap")# 或者直接從Github安裝 # installed from GitHub if(!require(devtools)){install.packages("devtools")} devtools::install_github("jokergoo/ComplexHeatmap")創建數據集
# pacman::p_load加載包,若不存在會自動安裝 # 用在這不太合適,因為這個包是bioconductor的包,自動安裝是調用install.packages, # 具體沒測試,可能會失敗pacman::p_load(ComplexHeatmap, circlize)# 設置隨機數種子,保證隨機數據一致 set.seed(7) mat <- cbind(rbind(matrix(rnorm(16, -1),4), matrix(rnorm(32, 1), 8)), rbind(matrix(rnorm(24, 1), 4), matrix(rnorm(48, -1), 8))) mat <- mat[sample(nrow(mat), nrow(mat)), sample(ncol(mat), ncol(mat))] rownames(mat) <- paste0("R", 1:12) colnames(mat) <- paste0("C", 1:10) # 常規矩陣就可以 mat繪圖
ComplexHeatmap繪制熱圖十分簡單,使用默認參數
# 大寫的H Heatmap(mat)定制化
ComplexHeatmap十分靈活,可以自定義多種參數繪制熱圖。
顏色
大多數情況下,繪制熱圖的矩陣都是連續性變量,通過提供顏色映射函數,我們可以自定義顏色,顏色選擇和搭配見史上最全的圖表色彩運用原理。這主要是通過circlize包中的colorRamp2()函數來實現的。
mat2 <- mat mat2[1,1] <- 100000 # 設置顏色,并且不做行列聚類 Heatmap(mat2, col = colorRamp2(c(-3,0,3), c("green","white","red")), cluster_rows = FALSE, cluster_columns = FALSE)試試彩虹色
Heatmap(mat, col = rev(rainbow(10)))如果是離散型變量或者數值型當做離散數據、字符型變量的話,這時就需要特別指定顏色了
#離散型變量/數值型變量 discrete_mat <- matrix(sample(1:4, 100, replace = TRUE), 10, 10) colors <- structure(circlize::rand_color(4), names=c("1","2","3","4")) Heatmap(discrete_mat, col = colors) #字符型變量 character_mat <- matrix(sample(letters[1:4], 100, replace = TRUE), 10, 10) colors <- structure(circlize::rand_color(4), names=letters[1:4]) Heatmap(character_mat, col = colors)可以看出,對于數值型變量,默認對行/列進行聚類,而對于字符型變量,則不進行聚類。
ComplexHeatmap允許數據中含有NA,只需要通過參數na_col來控制NA的顏色。
mat_with_NA <- mat mat_with_NA[sample(c(TRUE, FALSE), nrow(mat)*ncol(mat), replace = TRUE, prob = c(1,9))] <- NA Heatmap(mat_with_NA, na_col = "orange", clustering_distance_rows = "pearson")ComplexHeatmap默認使用LAB顏色空間(LAB color space),colorRamp2()提供了選擇顏色空間的參數選項
f1 <- colorRamp2(seq(min(mat), max(mat), length=3), c("blue","#EEEEEE", "red")) f2 <- colorRamp2(seq(min(mat), max(mat), length=3), c("blue","#EEEEEE", "red"), space = "RGB") H1 <- Heatmap(mat, col = f1, column_title = "LAB color space") H2 <- Heatmap(mat, col = f2, column_title = "RGB color space") H1+H2ComplexHeatmap提供了多種顏色空間選項,可以根據自身數據不斷調整,選取合適的顏色空間。
標題
一個熱圖的標題有:圖標題、圖例標題、行列標題等,?Heatmap里提供的name參數默認的是圖例的標題
Heatmap(mat, name = "legend")圖例標題也可以通過heatmap_legend_param()進行修改
Heatmap(mat, heatmap_legend_param = list(title="legend"))行列標題
Heatmap(mat, name = "legend", column_title = "Column", row_title = "Row")Heatmap(mat, name = "legend", column_title = "Column", column_title_side = "bottom")如果需要修改字體、字號,可以通過gpar()參數
Heatmap(mat, name = "legend",column_title = "Column", row_title = "Row", column_title_gp = gpar(fontsize=20, fontface="bold"), row_title_gp = gpar(fontsize=20, fontface="bold"))標題可以旋轉(水平或豎直)
Heatmap(mat, name = "legend", row_title = "Row", row_title_rot = 0)SessionInfo
sessionInfo()## R version 3.4.4 (2018-03-15) ## Platform: x86_64-w64-mingw32/x64 (64-bit) ## Running under: Windows 10 x64 (build 16299) ## ## Matrix products: default ## ## locale: ## [1] LC_COLLATE=Chinese (Simplified)_China.936 ## [2] LC_CTYPE=Chinese (Simplified)_China.936 ? ## [3] LC_MONETARY=Chinese (Simplified)_China.936 ## [4] LC_NUMERIC=C ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ## [5] LC_TIME=Chinese (Simplified)_China.936 ? ? ## ## attached base packages: ## [1] grid ? ? ?stats ? ? graphics ?grDevices utils ? ? datasets ?methods ? ## [8] base ? ? ## ## other attached packages: ## [1] circlize_0.4.3 ? ? ? ?ComplexHeatmap_1.17.1 ## ## loaded via a namespace (and not attached): ## ?[1] Rcpp_0.12.16 ? ? ? ? digest_0.6.15 ? ? ? ?rprojroot_1.3-2 ? ? ## ?[4] backports_1.1.2 ? ? ?pacman_0.4.6 ? ? ? ? magrittr_1.5 ? ? ? ? ## ?[7] evaluate_0.10.1 ? ? ?GlobalOptions_0.0.13 stringi_1.1.7 ? ? ? ## [10] GetoptLong_0.1.6 ? ? rmarkdown_1.9 ? ? ? ?RColorBrewer_1.1-2 ? ## [13] rjson_0.2.15 ? ? ? ? tools_3.4.4 ? ? ? ? ?stringr_1.3.0 ? ? ? ## [16] yaml_2.1.18 ? ? ? ? ?compiler_3.4.4 ? ? ? colorspace_1.3-2 ? ? ## [19] shape_1.4.4 ? ? ? ? ?htmltools_0.3.6 ? ? ?knitr_1.20R統計和作圖Graphpad,經典繪圖工具初學初探
維恩(Venn)圖繪制工具大全 (在線+R包)
在R中贊揚下努力工作的你,獎勵一份CheatShet
別人的電子書,你的電子書,都在bookdown
R語言 - 入門環境Rstudio
R語言 - 熱圖繪制 (heatmap)
R語言 - 基礎概念和矩陣操作
R語言 - 熱圖簡化
R語言 - 熱圖美化
R語言 - 線圖繪制
R語言 - 線圖一步法
R語言 - 箱線圖(小提琴圖、抖動圖、區域散點圖)
R語言 - 箱線圖一步法
R語言 - 火山圖
R語言 - 富集分析泡泡圖
R語言 - 散點圖繪制
R語言 - 韋恩圖
R語言 - 柱狀圖
R語言 - 圖形設置中英字體
R語言 - 非參數法生存分析
R語言 - 繪制seq logo圖
WGCNA分析,簡單全面的最新教程
psych +igraph:共表達網絡構建
一文學會網絡分析——Co-occurrence網絡圖在R中的實現
一文看懂PCA主成分分析
富集分析DotPlot,可以服
基因共表達聚類分析和可視化
R中1010個熱圖繪制方法
還在用PCA降維?快學學大牛最愛的t-SNE算法吧, 附Python/R代碼
一個函數抓取代謝組學權威數據庫HMDB的所有表格數據
文章用圖的修改和排版
network3D:?交互式桑基圖
network3D 交互式網絡生成
Seq logo 在線繪制工具——Weblogo
生物AI插圖素材獲取和拼裝指導
ggplot2高效實用指南 (可視化腳本、工具、套路、配色)
圖像處理R包magick學習筆記
SOM基因表達聚類分析初探
利用gganimate可視化全球范圍R-Ladies(R社區性別多樣性組織)發展情況
一分鐘繪制磷脂雙分子層:AI零基礎入門和基本圖形繪制
AI科研繪圖(二):模式圖的基本畫法
你知道R中的賦值符號箭頭(<-)和等號(=)的區別嗎?
R語言可視化學習筆記之ggridges包
利用ComplexHeatmap繪制熱圖(一)
ggplot2學習筆記之圖形排列
R包reshape2,輕松實現長、寬數據表格轉換
用R在地圖上繪制網絡圖的三種方法
PCA主成分分析實戰和可視化 附R代碼和測試數據
iTOL快速繪制顏值最高的進化樹!
12個ggplot2擴展包幫你實現更強大的可視化
編程模板-R語言腳本寫作:最簡單的統計與繪圖,包安裝、命令行參數解析、文件讀取、表格和矢量圖輸出
R語言統計入門課程推薦——生物科學中的數據分析Data Analysis for the Life Sciences
數據可視化基本套路總結
你知道R中的賦值符號箭頭<-和等號=的區別嗎?
使用dplyr進行數據操作30例
交集intersect、并集union、找不同setdiff
R包reshape2,輕松實現長、寬數據表格轉換
1數據類型(向量、數組、矩陣、 列表和數據框)
2讀寫數據所需的主要函數、與外部環境交互
3數據篩選——提取對象的子集
4向量、矩陣的數學運算
5控制結構
6函數及作用域
7認識循環函數lapply和sapply
8分解數據框split和查看對象str
9模擬—隨機數、抽樣、線性模型
1初識ggplot2繪制幾何對象
2圖層的使用—基礎、加標簽、注釋
3工具箱—誤差線、加權數、展示數據分布
4語法基礎
5通過圖層構建圖像
6標度、軸和圖例
7定位-分面和坐標系
8主題設置、存儲導出
9繪圖需要的數據整理技術
創建屬于自己的調色板
28個實用繪圖包,總有幾個適合你
熱圖繪制
R做線性回歸
繪圖相關系數矩陣corrplot
相關矩陣可視化ggcorrplot
繪制交互式圖形recharts
交互式可視化CanvasXpress
聚類分析factoextra
LDA分析、作圖及添加置信-ggord
解決散點圖樣品標簽重疊ggrepel
添加P值或顯著性標記ggpubr
Alpha多樣性稀釋曲線rarefraction curve
堆疊柱狀圖各成分連線畫法:突出組間變化
沖擊圖展示組間時間序列變化ggalluvial
桑基圖riverplot
微生物環境因子分析ggvegan
五彩進化樹與熱圖更配ggtree
多元回歸樹分析mvpart
隨機森林randomForest?分類Classification?回歸Regression
加權基因共表達網絡分析WGCNA
circlize包繪制circos-plot
R語言搭建炫酷的線上博客系統
28個實用繪圖包,總有幾個適合你
熱圖繪制
R做線性回歸
繪圖相關系數矩陣corrplot
相關矩陣可視化ggcorrplot
繪制交互式圖形recharts
交互式可視化CanvasXpress
聚類分析factoextra
LDA分析、作圖及添加置信-ggord
解決散點圖樣品標簽重疊ggrepel
添加P值或顯著性標記ggpubr
Alpha多樣性稀釋曲線rarefraction curve
堆疊柱狀圖各成分連線畫法:突出組間變化
沖擊圖展示組間時間序列變化ggalluvial
桑基圖riverplot
微生物環境因子分析ggvegan
五彩進化樹與熱圖更配ggtree
多元回歸樹分析mvpart
隨機森林randomForest?分類Classification?回歸Regression
加權基因共表達網絡分析WGCNA
circlize包繪制circos-plot
R語言搭建炫酷的線上博客系統
維恩(Venn)圖繪制工具大全 (在線+R包)
R包circlize:柱狀圖用膩了?試試好看的弦狀圖
獲取pheatmap聚類后和標準化后的結果
增強火山圖,要不要試一下?
一個震撼的交互型3D可視化R包 - 可直接轉ggplot2圖為3D
贈你一只金色的眼 - 富集分析和表達數據可視化
是Excel的圖,不!是R的圖
道友,來Rstudio里面看動畫了
用了這么多年的PCA可視化竟然是錯的!!!
R語言可視化學習筆記之ggridges包
萬能轉換:R圖和統計表轉成發表級的Word、PPT、Excel、HTML、Latex、矢量圖等
那天空飄過的梅花月餅,是今年中秋最好的禮物
高顏值免費在線繪圖
往期精品
畫圖三字經?生信視頻?生信系列教程?
心得體會?TCGA數據庫?Linux?Python?
高通量分析?免費在線畫圖?測序歷史?超級增強子
生信學習視頻?PPT?EXCEL?文章寫作?ggplot2
海哥組學?可視化套路?基因組瀏覽器
色彩搭配?圖形排版?互作網絡
自學生信?2019影響因子?GSEA?單細胞?
后臺回復“生信寶典福利第一波”或點擊閱讀原文獲取教程合集
總結
以上是生活随笔為你收集整理的ComplexHeatmap |理解绘图逻辑绘制热图的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 翻译|给数据科学家的10个提示和技巧Vo
- 下一篇: 用了这么多年的PCA可视化竟然是错的!!