iheatmapr包:可交互的热图绘制方法
iheatmapr包
在R中有許多用于繪制熱圖的包,今天介紹一個比較有意思的用于繪制熱圖的包,iheatmapr 包,這個包是用來繪制復雜的、且具有交互作用的熱圖。
用iheatmapr包繪制得到的熱圖就是下方這樣,不僅能夠反應多種信息,還具有交互功能。
這個熱圖中包含8個信息:
樣本的相關性矩陣熱圖;
按列的聚類關系;
按行的聚類關系;
樣本聚類模式的顏色注釋;
每個樣本最低和最高濃度的顏色注釋;
樣本自身分組的顏色注釋;
每個樣本真實藥物處理實際過程的熱圖;
平均藥物濃度隨著時間變化的散點圖。
iheatmapr包的安裝
“iheatmapr”包含在CRAN中,可以直接使用install.packages()函數進行安裝。
install.packages("iheatmapr")我的R是4.0,在安裝的時候提示4.0中缺少一個依賴包S4Vectors。
查了一下,S4Vectors是屬于Bioconductor的包,因此用Bioconductor包的安裝方式安裝S4Vectors。
if (!requireNamespace("BiocManager", quietly = TRUE)) install.packages("BiocManager") BiocManager::install("S4Vectors")在安的過程中發現速度那叫一個龜速,因此設置了一下Bioconductor的鏡像。
chooseBioCmirror()之后在對話框中輸入離自己最近的鏡像編號就行了。
安裝完S4Vectors之后,iheatmapr就可以正常加載了。
library(iheatmapr)使用實例
首先要構造用于分析的繪圖數據,這里使用datasets包內的Indometh作為示例。
#載入繪圖包library(iheatmapr)library(datasets)library(reshape2)#使用acast調用Indometh數據集中的內容Indometh_matrix <- acast(Indometh, Subject ~ time, value.var = "conc")Indometh_matrix <- Indometh_matrix[as.character(1:6),]rownames(Indometh_matrix) <- paste("Patient",rownames(Indometh_matrix))##計算相關性矩陣Indometh_patient_cor <- cor(t(Indometh_matrix))##取每個樣本數據中的最大值和最小值patient_max_conc <- apply(Indometh_matrix,1,max)patient_min_conc <- apply(Indometh_matrix,1,min)##給每個樣本隨機分配一個分組patient_groups?<-?c("A","A","B","A","B","A")繪制相關性矩陣熱圖
example_heatmap <- main_heatmap(Indometh_patient_cor, name = "Correlation")example_heatmap可以使用colors參數修改顏色,colors = “RColorBrewer palettle/顏色名字”。
main_heatmap(Indometh_patient_cor, colors = "Pinks",?????????????name?=?"Correlation")添加第二幅熱圖
main_heatmap(Indometh_patient_cor, name = "Correlation") %>%????add_main_heatmap(Indometh_matrix,?name?=?"Indometacin<br>Concentration"如果name=相同名字的話,新添加的熱圖會與之前的熱圖共享相同的顏色。
如果你想改變添加熱圖的位置,就使用side=c(“left”, “right”, “top”,”bottom”)。
添加標簽
main_heatmap(Indometh_matrix, name="Correlation") %>% add_row_labels() %>% add_col_labels() %>% add_row_title("Patients", buffer=0.2) %>%??add_col_title("Patients",?buffer=0.1)buffer規定title文字與圖之間的距離。
添加聚類關系
main_heatmap(Indometh_patient_cor) %>% add_row_clustering() %>%??????????add_col_clustering()如果是希望以顏色表示樣本的聚類關系,則需要先進行一個聚類,之后在手動進行負值。
clust_assign <- kmeans(Indometh_matrix, 3)$cluster main_heatmap(Indometh_patient_cor) %>% add_row_clusters(clust_assign) %>%??add_col_clusters(clust_assign)添加樣本注釋
main_heatmap(Indometh_patient_cor) %>% add_row_annotation(data.frame("Max" = patient_max_conc, "Min" = patient_min_conc, "Groups" = c("A","A","B","B","A","A")), colors = list("Max" = "Reds", "Min" = "Blues",???????????????????????????????????"Groups"?=?c("purple","pink")))除了add_row_annotation,還可以使用add_row_signal和add_row_groups添加注釋。
main_heatmap(Indometh_patient_cor) %>%add_row_signal(patient_max_conc, "Max<br>Concentration", title = "Max", colors = "Reds") %>%add_row_signal(patient_min_conc, "Min<br>Concentration", title = "Min", colors = "Reds") %>%add_row_groups(c("A","A","B","B","A","A"),?"Groups")寫在后面
到這里,我們已經分布講解了文章開始出現的復雜熱圖中的大部分實現代碼,下面給出一個完整的代碼。
main_heatmap(Indometh_patient_cor,name = "Correlation") %>% add_col_clustering() %>% add_row_clustering(k = 3) %>% add_row_title("Patients") %>% add_col_title("Patients") %>% add_row_annotation(data.frame("Max" = patient_max_conc, "Min" = patient_min_conc, "Groups" = patient_groups)) %>% add_main_heatmap(Indometh_matrix, name = "Indometacin<br>Concentration") %>% add_col_labels() %>% add_col_title("Time") %>%??add_col_summary()更對關于iheatmapr包的參數使用和個性化設置,請參考該包的幫助文檔。
https://docs.ropensci.org/iheatmapr/articles/full_vignettes/iheatmapr.html#modular-building-blocks-1
你可能還想看
R語言 - 熱圖美化
R中1010個熱圖繪制方法
這也太簡單了吧!一個函數完成數據相關性熱圖計算和展示
利用ComplexHeatmap繪制熱圖(一)
network3D: 交互式桑基圖
network3D: 交互式網絡生成
一個震撼的交互型3D可視化R包 - 可直接轉ggplot2圖為3D
ggThemeAssist|鼠標調整主題,并返回代碼
往期精品(點擊圖片直達文字對應教程)
后臺回復“生信寶典福利第一波”或點擊閱讀原文獲取教程合集
總結
以上是生活随笔為你收集整理的iheatmapr包:可交互的热图绘制方法的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 蛋白质组学研究概述
- 下一篇: 图示不写程序如何根据dbSNP rs号批