Как аннотировать объект ggtree значениями начальной загрузки? - PullRequest
0 голосов
/ 23 октября 2018

У меня есть филогенетическое древо класса phylo с 24 кончиками и 23 внутренними узлами.Я провел анализ начальной загрузки для этого дерева и данных, используя boot.phylo, который вернул вектор из 23 значений начальной загрузки.Я создал объект ggtree из моего исходного дерева и теперь пытаюсь добавить значения начальной загрузки к узлам.Я делаю что-то не так, но я не знаю что.

Вот что я сделал:

gg.tr <- ggtree(mp.tree)
gg.tr + geom_label2(aes(subset=!isTip, label=bphylo$BP))

bphylo$BP - вектор 23 значений начальной загрузки.Когда я запускаю этот код, я получаю следующую ошибку:

Error: Aesthetics must be either length 1 or the same as the data (47): subset, label, x, y

Я не понимаю эту ошибку, потому что я хочу поместить значения начальной загрузки только в 23 из 47 возможных мест.

Когда я вызываю следующую функцию, я получаю значение 23:

length(which(gg.tr$data$isTip==FALSE))

Если длина gg.tr$data$isTip==FALSE равна 23, и у меня 23 значения начальной загрузки, почему я получаюошибка, говорящая мне, что мой ярлык неправильной длины?

1 Ответ

0 голосов
/ 23 октября 2018

Вы можете комментировать свое дерево с помощью geom_text.Не видя ваших данных, трудно понять, что происходит, но вот пример с воспроизводимым набором данных.

library(devtools)
devtools::install_github("GuangchuangYu/ggtree")

bs <- data.frame(nodename = c("t30", "t12", "t22", "t26", "t6", "t17", "t4","t7", "t9", "t1", "t8", "t25","t23",
                          "t28", "t10", "t20", "t3",  "t11", "t19", "t29", "t2","t18", "t24",
                          "t27", "t15", "t13", "t14", "t16", "t5","t21"), bootstrap = c(runif(30, 85, 98)), stringsAsFactors = F)
bs$bootstrap <- round(bs$bootstrap, digits = 0)
rownames(bs) <- NULL
nodesupport = c(round(runif(59, 65, 80), digits = 0))

set.seed(0)
tree <- rtree(30)
p <- ggtree(tree)
p <- p %<+% bs + geom_tiplab()
p <- p + geom_text(aes(label = bootstrap), hjust = 1, vjust = -0.4, size = 3) + geom_nodelab(aes(label = nodesupport)) # specify your node label here, looks like BP
p

...