Метки узлов на круговом филогенетическом дереве

Я пытаюсь создать круговое филогенетическое дерево. У меня есть эта часть кода:

fit<- hclust(dist(Data[,-4]), method = "complete", members = NULL)

nclus= 3
color=c('red','blue','green')
color_list=rep(color,nclus/length(color))
clus=cutree(fit,nclus)

plot(as.phylo(fit),type='fan',tip.color=color_list[clus],label.offset=0.2,no.margin=TRUE, cex=0.70, show.node.label = TRUE)

И вот результат: введите описание изображения здесь

Также я пытаюсь показать метку для каждого узла и раскрасить ветки. Есть предложения, как это сделать?

Спасибо!


person Vis    schedule 14.12.2014    source источник


Ответы (1)


Когда вы говорите «цветные ветви», я предполагаю, что вы имеете в виду окраску краев. Кажется, это работает, но я думаю, что есть способ получше.

Здесь используется встроенный 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)

Что касается «пометить узлы», если вы имеете в виду пометку кончиков, похоже, вы это уже сделали. Если вам нужны разные метки, к сожалению, в отличие от plot.hclust(...), аргумент labels=... отклоняется. Вы можете поэкспериментировать с функцией tiplabels(....), но, похоже, она не очень хорошо работает с type="fan". Ярлыки происходят от имен строк Data, поэтому лучше всего IMO изменить имена строк до кластеризации.

Если вы на самом деле имеете в виду надписи на узлах (точки соединения между краями, взгляните на nodelabels(...). Я не привожу рабочий пример, потому что не могу представить, какие метки вы бы поместили туда.

person jlhoward    schedule 15.12.2014
comment
Это потрясающе. Это именно то, что мне нужно. Кроме того, отлично работает nodelabels (). Большое спасибо! - person Vis; 16.12.2014
comment
Спасибо за это. Я построил свою дендрограмму, но дерево слишком сильно разделяет центр графика, поэтому края, соединяющие метки, очень длинные. Есть ли способ контролировать это? - person Emmanuel Goldstein; 25.05.2021