1

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

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”。

通常它就像不将颜色参数设置为元素标签 (geom_tiplab) 中的 aes 一样简单。但是,如果我不调用 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那么简单。

4

2 回答 2

2

show.legend您可以通过在该 geom 调用中设置布尔值,从任何 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="")))
于 2021-04-05T17:04:00.057 回答
0

scale_color_manual()您可以使用以下代码 调整图例 var 标签的文本: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))

在此处输入图像描述

于 2021-04-05T17:10:04.463 回答