Again I find myself trying to plot a cluster dendrogram with colored labels. With some insight from this post, I came up with the following function:

library(RColorBrewer)
# matrix contains genomics-style data where columns are samples
# (if otherwise remove the transposition below)
# labels is a factor variable going along the columns of matrix
plotHclustColors <- function(matrix,labels,...) {
colnames(matrix) <- labels
d <- dist(t(matrix))
hc <- hclust(d)
labelColors <- brewer.pal(nlevels(labels),"Set1")
colLab <- function(n) {
if (is.leaf(n)) {
a <- attributes(n)
labCol <- labelColors[which(levels(lab) == a$label)]
attr(n, "nodePar") <- c(a$nodePar, lab.col=labCol)
}
n
}
clusDendro <- dendrapply(as.dendrogram(hc), colLab)
plot(clusDendro,...)
}

In action:

### Like this:

Like Loading...

*Related*

Or just, ColorDendrogram from sparcl package