簡體   English   中英

R繪制帶有簇的熱圖,但隱藏樹狀圖

[英]R draw heatmap with clusters, but hide dendrogram

默認情況下,R 的heatmap將聚集行和列:

mtscaled = as.matrix(scale(mtcars))
heatmap(mtscaled, scale='none')

在此處輸入圖片說明

我可以禁用集群:

heatmap(mtscaled, Colv=NA, Rowv=NA, scale='none')

然后樹狀圖消失了:在此處輸入圖片說明

但是現在數據不再聚類了。

我不希望顯示樹狀圖,但我仍然希望將行和/或列聚集在一起。 我怎樣才能做到這一點?

我想要的例子:在此處輸入圖片說明

你可以用pheatmap做到這一點

mtscaled <- as.matrix(scale(mtcars))
pheatmap::pheatmap(mtscaled, treeheight_row = 0, treeheight_col = 0)

在此處查看 pheatmap 輸出:

熱圖輸出

library(gplots)
heatmap.2(mtscaled,dendrogram='none', Rowv=TRUE, Colv=TRUE,trace='none')

Rowv -is TRUE,這意味着樹狀圖是根據行均值計算和重新排序的。

Colv - 列應與行一樣對待。

在此處輸入圖片說明

對於 ComplexHeatmap,有刪除樹狀圖的函數參數:

library(ComplexHeatmap)
Heatmap(as.matrix(iris[,1:4]), name = "mat", show_column_dend = FALSE, show_row_dend = FALSE)

我對 pheatmap 有類似的問題,它具有更好的可視化和熱圖或 heatmap.2。 雖然 heatmap.2 是您的解決方案的選擇,這里是 pheatmap 的解決方案,通過提取聚類數據的順序。

library(pheatmap)
mtscaled = as.matrix(scale(mtcars))
H = pheatmap(mtscaled)

這是 pheatmap 的輸出

pheatmap(mtscaled[H$tree_row$order,H$tree_col$order],cluster_rows = F,cluster_cols = F)

這是提取聚類順序后pheatmap的輸出

使用基本的 R 熱圖函數做兩次樹狀圖。 獲取第一次運行的輸出,該輸出聚類但強制繪制樹狀圖,然后再次將其輸入熱圖函數。 這一次,沒有聚類,也沒有繪制樹狀圖。

#生成一個有一點結構的隨機對稱矩陣,並制作一個熱圖

M100s<-matrix(runif(10000),nrow=100)
M100s[2,]<-runif(100,min=0.1,max=0.2)
M100s[4,]<-runif(100,min=0.1,max=0.2)
M100s[6,]<-runif(100,min=0.1,max=0.2)
M100s[99,]<-runif(100,min=0.1,max=0.2)
M100s[37,]<-runif(100,min=0.1,max=0.2)
M100s[lower.tri(M100s)] <- t(M100s)[lower.tri(M100s)]
heatmap(M100s)

#保存輸出

OutputH <- heatmap(M100s)

#在沒有聚類或樹狀圖的情況下再次運行它

M100c <- M100s
M100c1 <- M100c[,OutputH$rowInd]
M100c2 <- M100c1[OutputH$colInd,]
heatmap(M100c2,Rowv = NA, Colv = NA, labRow = NA, labCol = NA)

您可以依賴基礎 R 結構並考慮以下基於自己構建 hclust 樹的方法。

mtscaled = as.matrix(scale(mtcars))
row_order = hclust(dist(mtscaled))$order
column_order = hclust(dist(t(mtscaled)))$order
heatmap(mtscaled[row_order,column_order], Colv=NA, Rowv=NA, scale="none")

無需安裝額外的垃圾。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM