2

我使用以下简单的代码进行了聚类分析

hc2 = hclust(dist(geno.imp))
pdf(file="file.pdf", width=50)
plot(hc2,cex=0.2) 
dev.off()

我想强调一些特定的叶子(不是节点)。我在一个单独的向量中有这些叶子的列表。如何仅突出显示特定的叶子,而使所有其他叶子保持黑色?

4

2 回答 2

2

对于特定情况,sgibb 的答案是一个很好的答案。您还可以尝试使用专门为此类事情设计的dendextend包。

这里有两种方法可以获得与 sgibb 示例中相同的结果:

dend <- as.dendrogram(hclust(dist(USArrests), "ave"))
## create some example data
set.seed(1)
highlight <- rownames(USArrests)[sample(nrow(USArrests), 10)]

install.packages("dendextend")
library(dendextend)
# create a dendrogram with colored labels:
dend2 <- color_labels(dend, labels = highlight , col = 2) 
# ploting it
plot(dend2)

# Here is a second way for doing the same thing:
dend2 <- color_labels(dend, col = ifelse(labels(dend) %in% highlight, 2, 1)) 
plot(dend2)

在此处输入图像描述

于 2014-08-11T07:17:31.293 回答
2

看看?dendrapplydendrapply允许您将函数应用于 a 的每个节点dendrogram。在该函数中,您可以更改节点的属性,例如:

## create some example data
set.seed(1)
highlight <- rownames(USArrests)[sample(nrow(USArrests), 10)]

## function to change color etc. of a leaf
colorLeafs <- function(x) {
  if (is.leaf(x) && attr(x, "label") %in% highlight) {
    attr(x, "nodePar") <- list(lab.col="red", pch=NA)
  }
  return(x)
}

hc <- hclust(dist(USArrests), "ave")

dd <- dendrapply(as.dendrogram(hc), colorLeafs)

plot(dd)

在此处输入图像描述

于 2014-04-14T22:42:34.137 回答