Как объединить ggtree (), groupOTU () и geom_polygon (), чтобы выделить дерево с блоками цветов - PullRequest
0 голосов
/ 29 апреля 2020

Я пытаюсь выделить свое дерево с помощью блоков цветов, но этот блок должен основываться на членстве в отдельной группе / происхождении.

Я, кажется, довольно близок к тому, чтобы добавить geom_polygon(), но, очевидно, это не сработало (см. График).

Одна сложность заключается в том, что я хочу показать иерархическую природу принадлежности к линии. , но даже после неудачной попытки заговора, geom_polygon() не поднимает самые низкие уровни линии "1" и "1.1".

Пример:

Загрузка в дерево:

library(ggtree)
library(ggplot2)
nwk <- system.file("extdata", "sample.nwk", package="treeio")
tree <- read.tree(nwk)

Назначить выборки для групп (иерархически):

df <- rbind(
data.frame(ID = tree$tip.label, lin = rep("1", length(tree$tip.label))),
data.frame(ID = LETTERS[1:8], lin = rep("1.1", length(LETTERS[1:8]))),
data.frame(ID = LETTERS[9:13], lin = rep("1.2", length(LETTERS[9:13]))),
data.frame(ID = LETTERS[1:5], lin = rep("1.1.1", length(LETTERS[1:5]))),
data.frame(ID = c("F", "G", "H"), lin = rep("1.1.2", 3)),
data.frame(ID = c("K", "L"), lin = rep("1.2.1", 2)) )

Преобразовать группу df в список:

groups <- split(df$ID, df$lin)

Попытка выделения с помощью блоков цветов:

test_tree <- ggtree(tree)
groupOTU(test_tree, groups, 'Lin') +
  geom_polygon(alpha = 0.7, aes(fill = Lin))

Результат:

tree_result

In В документации ggtree есть примеры подсветки блоков с использованием блоков цветов, которые также могут отображать иерархическую природу групп («5.2.2. Подсветка блоков»):

hierarchical_blocks

А есть и пример выделения отдельных образцов на основе членства в группе, но только раскраски линий («6.4 Группировка таксонов»):

highlight_samples_by_group

Как мне объединить эти две функции?

...