如何在分层热图树形图中添加聚类矩形

nev*_*int 4 plot r cluster-analysis

以下代码创建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")
Run Code Online (Sandbox Code Playgroud)

这产生了这个情节: 在此输入图像描述

现在我想创建一个带有树状图的热图

# 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);
Run Code Online (Sandbox Code Playgroud)

目前它看起来像这样: 在此输入图像描述

在最终的热图中有一种方法可以为每个簇添加红色矩形(即在左边的树形图上),就像第一个图一样?

TWL*_*TWL 7

我可以通过RowSideColorsheatmap.2函数中使用参数来建议替代方案:

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

如果您想重新分配颜色:

# 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])
Run Code Online (Sandbox Code Playgroud)

第一个例子如下所示:

在此输入图像描述