Когда вы говорите «цветные ветви», я предполагаю, что вы имеете в виду окраску краев. Кажется, это работает, но я думаю, что есть способ получше.
Здесь используется встроенный mtcars
набор данных, поскольку вы не предоставили свои данные.
plot.fan <- function(hc, nclus=3) {
palette <- c('red','blue','green','orange','black')[1:nclus]
clus <-cutree(hc,nclus)
X <- as.phylo(hc)
edge.clus <- sapply(1:nclus,function(i)max(which(X$edge[,2] %in% which(clus==i))))
order <- order(edge.clus)
edge.clus <- c(min(edge.clus),diff(sort(edge.clus)))
edge.clus <- rep(order,edge.clus)
plot(X,type='fan',
tip.color=palette[clus],edge.color=palette[edge.clus],
label.offset=0.2,no.margin=TRUE, cex=0.70)
}
fit <- hclust(dist(mtcars[,c("mpg","hp","wt","disp")]))
plot.fan(fit,3); plot.fan(fit,5)
![](https://i.stack.imgur.com/aUw2q.png)
![](https://i.stack.imgur.com/I2c8S.png)
Что касается «пометить узлы», если вы имеете в виду пометку кончиков, похоже, вы это уже сделали. Если вам нужны разные метки, к сожалению, в отличие от plot.hclust(...)
, аргумент labels=...
отклоняется. Вы можете поэкспериментировать с функцией tiplabels(....)
, но, похоже, она не очень хорошо работает с type="fan"
. Ярлыки происходят от имен строк Data
, поэтому лучше всего IMO изменить имена строк до кластеризации.
Если вы на самом деле имеете в виду надписи на узлах (точки соединения между краями, взгляните на nodelabels(...)
. Я не привожу рабочий пример, потому что не могу представить, какие метки вы бы поместили туда.
person
jlhoward
schedule
15.12.2014