Я пытался построить дерево с цветными ветвями и подсказками, используя пакет ggtree
в R. Вот пример кода, использующего дерево ящериц Anolis.
library(ggtree);library(tidyverse);library(ape)
anole.tree<-read.tree("http://www.phytools.org/eqg2015/data/anole.tre")
svl <- read.csv("http://www.phytools.org/eqg2015/data/svl.csv",row.names=1)
cls<-list(clade1=c("baleatus","barahonae","ricordii","eugenegrahami","christophei","cuvieri"),
clade2=subset(anole.tree$tip.label,!(anole.tree$tip.label %in% c("baleatus","barahonae","ricordii","eugenegrahami","christophei","cuveri"))))
anole.tree_new<-groupOTU(anole.tree,.node=cls)
ggtree(anole.tree_new,layout="circular",ladderize=TRUE)+
geom_tree(aes(color=group))+
scale_color_manual(values=c("blue","red"))+
geom_tiplab(size=0.8,aes(color=group))+
theme(legend.position = c(0.9, 1),
legend.justification = c(0,1),
legend.title=element_text(size=7),legend.text=element_text(size=7))
Проблема, с которой я столкнулся, заключается в том, что полученный график включает текстовый элемент (маленький a) как часть легенды. Мне не удалось понять, как убрать этот текстовый элемент из легенды. Я хочу сохранить саму легенду, но не хочу, чтобы красный и синий a были нанесены рядом с красной и синей линиями в приведенном выше примере.
Обычно это было бы так просто, как не устанавливать аргумент цвета как aes в метках элементов (geom_tiplab). Однако, если я не назову групповой цвет под aes ...
ggtree(anole.tree_new,layout="circular",ladderize=TRUE)+
geom_tree(aes(color=group))+
scale_color_manual(values=c("blue","red"))+
geom_tiplab(size=0.8,color=group)+
theme(legend.position = c(0.9, 1),
legend.justification = c(0,1),
legend.title=element_text(size=7),legend.text=element_text(size=7))
Я получаю сообщение об ошибке, что группа объектов не найдена. Так что это не так просто, как в обычном ggplot.
guide = FALSE
вscale_color_manual
удалит его из легенды. - person Sinh Nguyen   schedule 05.04.2021