Расположение меток подсказок рядом с подсказками на дендрограмме

Я читаю дерево (.nex), преобразую его в класс dendro и рисую, используя ggdendrogram из ggplot2. Как разместить метки подсказок рядом с подсказками в дендрограмме, а не внизу?

mytree <- read.nexus('mytree.nex')
den_data_mytree <- dendro_data(as.dendrogram(mytree))
pdf('mytree.pdf', h=55,w=55)
ggdendrogram(den_data_mytree, theme_dendro=F, labels=F) +
  labs(x = "x label", y = "y label", title = "Title") + 
  geom_text(data = den_data_mytree$labels, aes(x, y, label = label,color=den_data_mytree$labels$group), hjust = 1.2, size = 9, angle=90) + 
  scale_colour_manual(values=c("purple","orange")) +
  theme(axis.text=element_text(size=24), axis.title=element_text(size=54,face="bold"), title = element_text(size=54), legend.title = element_blank())
dev.off()

На выходе это изображение:

ggdendogram

Вот данные:

>dput(core_snp_tree)
structure(list(edge = structure(c(109L, ..., 108L), .Dim = c(213L, 2L)), edge.length = c(0.00373, 0,  3e-05, ..., 0.00844), Nnode = 106L,      node.label = c("", "100.00", ..., "100.00"), tip.label = c("list","of","tip","labels"), root.edge = 0), class = "phylo", order = "cladewise")

person echo    schedule 10.12.2020    source источник
comment
Можете ли вы опубликовать вывод dput(mytree)?   -  person Werner    schedule 11.12.2020
comment
Он имеет следующий формат: > dput(core_snp_tree) structure(list(edge = structure(c(109L, ..., 108L), .Dim = c(213L, 2L)), edge.length = c(0.00373, 0, 3e-05, ..., 0.00844), Nnode = 106L, node.label = c("", "100.00", ..., "100.00"), tip.label = c("list","of","tip","labels"), root.edge = 0), class = "phylo", order = "cladewise")   -  person echo    schedule 11.12.2020
comment
Вывод кажется неправильным: ``` › core_snp_tree ‹- структура (список (край = структура (c (109L, ..., 108L), .Dim = c (213L, 2L)), край. длина = c (0,00373, 0, 3e-05, ..., 0,00844), Nnode = 106L, node.label = c(, 100,00, ..., 100,00), tip.label = c(список, из, наконечник, метки), корень. edge = 0), class = phylo, order = cladewise) Ошибка в структуре (c (109L, ..., 108L), .Dim = c (213L, 2L)) : '...' используется в неправильном контексте ` ``   -  person Tal Galili    schedule 12.12.2020


Ответы (1)


Вероятно, вы захотите использовать пакет dendextend с функцией hang.dendrogram вместе с ggdend (самый простой способ - использовать вызов ggplot для объекта дендрограммы). В общем, dendextend::ggdend — это более расширенная версия ggdendro.

Пример:

hc <- hclust(dist(USArrests[1:5, ]), "ave")
library(dendextend)
dend <- hang.dendrogram(as.dendrogram(hc))
library(ggplot2)
ggplot(dend)

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

Подробнее см. здесь.

person Tal Galili    schedule 12.12.2020
comment
Когда я пытаюсь выполнить команду dend ‹- hang.dendrogram(as.dendrogram(hc)) с моим деревом связей (из Raxml), я получаю эту ошибку: «Ошибка в ape::as.hclust.phylo(object): дерево не является ультраметрическим». Что мне делать дальше? - person echo; 08.01.2021
comment
Это означает, что у вас, вероятно, есть ветки, которые меньше, чем их листья. Вы должны взглянуть на свое дерево и понять, имеет ли оно смысл - person Tal Galili; 08.01.2021
comment
У вас также может быть куча листьев высотой 0... - person Tal Galili; 08.01.2021