簡體   English   中英

如何在分層熱圖樹形圖中添加聚類矩形

[英]How to add clustering rectangle in hierarchical heatmap dendogram

以下代碼創建1.樹形圖和2.帶有樹形圖的熱圖

mydata <- mtcars
hclustfunc <- function(x) hclust(x, method="complete")
distfunc <- function(x) dist(x,method="euclidean")
d <- distfunc(mydata)
fit <- hclustfunc(d)

#plot dendogram only
plot(fit)
groups <- cutree(fit, k=5) 

# Add rectangle in cluster
rect.hclust(fit, k=5, border="red")

這產生了這個情節: 在此輸入圖像描述

現在我想創建一個帶有樹狀圖的熱圖

# plot heat map with dendogram together.
library("gplots")
heatmap.2(as.matrix(mydata),dendrogram="row",trace="none", margin=c(8,9), hclust=hclustfunc,distfun=distfunc);

目前它看起來像這樣: 在此輸入圖像描述

在最終的熱圖中有一種方法可以為每個簇添加紅色矩形(即在左邊的樹形圖上),就像第一個圖一樣?

我可以通過在heatmap.2函數中使用RowSideColors參數來建議替代方法:

heatmap.2(as.matrix(mydata),dendrogram="row",trace="none", margin=c(8,9), 
         hclust=hclustfunc, distfun=distfunc, RowSideColors=as.character(groups))

如果您想重新分配顏色:

# require(RColorBrewer)
cols <- brewer.pal(max(groups), "Set1")
heatmap.2(as.matrix(mydata),dendrogram="row",trace="none", margin=c(8,9), 
         hclust=hclustfunc, distfun=distfunc, RowSideColors=cols[groups])

第一個例子如下所示:

在此輸入圖像描述

我攻擊了heatmap.2並添加了以下行:

cluster <- cutree(hcr, k=kcluster) 
clustab <- table(cluster)[unique(cluster[hcr$order])]
m <- c(0, cumsum(clustab))
which <- 1L:kcluster
border <- rep_len(border, length(which))
for (n in seq_along(which))
   rect(par("usr")[2L]+10,m[which[n]] + 0.66, 
    mean(rev(hcr$height)[(kcluster - 1):kcluster]),
    m[which[n] + 1] + 0.33, 
    border = border[n])

在這一行之后:

plot(ddr, horiz = TRUE, axes = FALSE, yaxs = "i", leaflab = "none")

您可以在此要點中找到新功能的代碼。

例子:

heatmap.rect(as.matrix(mydata),
             dendrogram="row",trace="none", margin=c(8,9), 
             hclust=hclustfunc,distfun=distfunc,key=FALSE,
             kcluster=7,border='blue')

在此輸入圖像描述

您可以根據簇而不是聚類矩形為樹形圖着色。 它看起來很亂。 R中的'fheatmap'包提供了選擇自定義顏色面板等進行着色的選項。

該軟件包及其文檔可在http://cran.r-project.org/web/packages/fheatmap/index.html上找到。

暫無
暫無

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

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