У меня есть филогенетическое дерево в формате .tre
и сопутствующий набор данных. Точная форма дерева не имеет значения, это просто случайное филогенетическое дерево. Набор данных имеет два столбца: имена и цвета .
При построении такого дерева я бы, скорее всего, добавил цветные точки (два разных цвета) к дереву из этого сопровождающего набора данных. Проблема в том, что когда я использую следующий кусок кода:
ggtree(RANDOMTREE) + geom_tippoint(pch=16, col=RANDOMDATA$color) + geom_tiplab(offset=0.1)
это окрашивает точки, но цвета, конечно, имеют порядок, который они имеют в сопровождающем наборе данных.
Но я бы хотел сопоставить цвета, основанные на названиях видов в дереве, с именами в наборе данных (они одного формата, но в другом порядке). Я еще не понял этого. Не могли бы вы помочь мне с этим?
Большое спасибо.
Пример кода:
source("https://bioconductor.org/biocLite.R")
biocLite("ggtree")
library(ggtree)
tree<-read.tree(text="(spec1,((spec2,(spec9,(spec3,spec5))),spec8,(spec6,(spec7,spec4))));")
dataset1<-data.frame("name" = c("spec1","spec2","spec3","spec4","spec5","spec6","spec7","spec8","spec9"), "colour" = c("red","red","blue","red","red","blue","blue","red","blue"))
ggtree(tree) + geom_tiplab() + geom_tippoint(pch=16, col=as.factor(dataset1$colour))
Что я получу:
ошибочно обозначенное дерево
Что бы я хотел получить:
правильно помеченное дерево