如何在 ggtree 中绘制彩色提示标签而不将其作为图例的一部分?

How can I plot colored tip labels in ggtree without including it as part of the legend?

我一直在尝试使用 R 中的 ggtree 包绘制带有颜色编码分支和提示的树。这是使用 Anolis[=22= 树的示例代码] 蜥蜴.

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那样简单。

您可以通过在该 geom 调用中设置布尔值 show.legend 来从任何 geom(至少,我认为是任何 geom)中删除对图例的美学添加。所以,show.legend = FALSE 似乎对我有用:

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), show.legend=FALSE)+
  theme(legend.position = c(0.9, 1),
        legend.justification = c(0,1),
        legend.title=element_text(size=7),legend.text=element_text(size=7))

或者,如果您愿意,您可以不使用 show.legend 通过覆盖图例的美学来执行此操作。在这种情况下,您可能希望将所有标签都变成一个空字符串,因此图例上显示的标签只是 ""。您可以通过 guides():

# add the following to your plot code
guides(color=guide_legend(override.aes = list(label="")))

您可以使用以下代码调整 scale_color_manual() 中图例变量标签的文本: label=c("whatever you want","more what ever")

ggtree(anole.tree_new,layout="circular",ladderize=TRUE)+
  geom_tree(aes(color=group))+
  scale_color_manual(values=c("blue","red"), label=c("whatever you want","more what ever"))+
  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=22),legend.text=element_text(size=22))