Я пытаюсь выделить свое дерево с помощью блоков цветов, но этот блок должен основываться на членстве в отдельной группе / происхождении.
Я, кажется, довольно близок к тому, чтобы добавить 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))
Результат:
In В документации ggtree есть примеры подсветки блоков с использованием блоков цветов, которые также могут отображать иерархическую природу групп («5.2.2. Подсветка блоков»):
А есть и пример выделения отдельных образцов на основе членства в группе, но только раскраски линий («6.4 Группировка таксонов»):
Как мне объединить эти две функции?