Раскрашивание меток на основе внешнего набора данных в ggtree

У меня есть филогенетическое дерево в формате .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))

Что я получаю: дерево с неверной меткой

Что бы я хотел получить: правильно помеченное дерево


person Ondra Kauzál    schedule 02.11.2018    source источник
comment
Привет, Ондра, можно ли предоставить образцы данных или метод создания образцов данных? функция dput может помочь, но может оказаться бесполезной для .tre данных; Я раньше не работал с этими данными   -  person Jonny Phelps    schedule 02.11.2018
comment
Кроме того, эта версия требуется? bioconductor.org/packages/release/bioc/html/ggtree.html   -  person Jonny Phelps    schedule 02.11.2018
comment
Дорогой Джонни, я отредактировал свой вопрос, так что теперь он также предоставляет некоторые образцы данных, показывающие мою проблему с тем, чего я хотел бы достичь. Надеюсь, это поможет.   -  person Ondra Kauzál    schedule 02.11.2018


Ответы (1)


Я могу получить правильную группировку, но не нужный цвет сразу

p <- ggtree(tree) + geom_tiplab()
p <- p %<+% dataset1 + geom_tippoint(pch=16, aes(col=colour))
p

Я использовал это для справки: https://aschuerch.github.io/posts/2017-04-24-blog-post-1. Пакет имеет плохую документацию. Вы можете добиться того, чего хотите, переключая "красный" и "синий": p

Он берет порядок цветов и объединяет его со встроенной цветовой шкалой. Итак, если шкала начинается с (красный, синий), а ваша серия (синий, красный), она совпадает в этом порядке. Есть смысл?

изменить: установка этого пакета была кошмаром, если есть более простой пакет, такой как https://cran.r-project.org/web/packages/data.tree/vignettes/data.tree.html, я бы посоветовал попробовать другие. Он удалил так много моих основных пакетов, например dplyr и data.table, у него смехотворное количество зависимостей

person Jonny Phelps    schedule 02.11.2018
comment
Большое спасибо, это именно то, что я искал. Не профессионал в R и не думает об этом, поэтому, пожалуйста, примите мои извинения, если это было слишком неубедительно, чтобы спрашивать. Большое тебе спасибо. - person Ondra Kauzál; 03.11.2018