如何在删除提示后一致地绘制树?

时间:2015-11-12 15:55:05

标签: r

想象一下,我有一棵树(或树状图)

require(ape)
fulltree <- rtree(n=50, br=NULL)

...然后我删除了一些提示

prunetree <- drop.tip(fulltree,node=5)

如果我绘制修剪过的树,R会重新调整它,以便只考虑剩余的提示。

par(mfrow=c(1,2))
plot(fulltree, type="fan")
plot(prunetree, type="fan")

但这使得很难分辨出现在缺少哪一部分树。

是否有一种简单的方法可以用相同的比例/排列等绘制修剪过的树。作为完整的树,以便其余的分支似乎没有移动? (在这个例子中,我会得到一些pac-man形状而不是一个完整的圆圈)我认为这可以通过将树枝着色为白色或浅灰色来完成。如果有人想要动画丢失技巧的树,那将非常有用。

2 个答案:

答案 0 :(得分:1)

这个问题就像你说的那样,数据从新树中删除,因此它被重新调整。为了解决这个问题,你可能最好用所需技巧的新颜色绘制树。

我们可以使用优秀的包ggtree(以及其他方法)来实现这一点:

set.seed(1234)

library(ggtree)
library(gridExtra)

fulltree <- rtree(n=10, br=NULL)
col <- rep(1, 2*fulltree$Nnode + 1)
col[5] <- 10

grid.arrange(ggtree(fulltree, layout = "fan") + geom_text(aes(label=label)),
             ggtree(fulltree, col = col, layout = "circular") + geom_text(aes(label=label)))

enter image description here

实际着色来自col[5] <- 20:将col[5]更改为所需的掉落笔尖,将20更改为所需的颜色。

答案 1 :(得分:1)

感谢jeremycg获取ggtree提示。我认为这更像是我在寻找的东西。

require(ape)
library(ggtree)
library(gridExtra)
library(ggplot2)

set.seed(1234)

fulltree <- rtree(n=50, br=NULL)

#These are the tips to drop
prunetips <- c("t41","t44","t42","t8")

#But get the tips to keep
keeptips <- fulltree$tip.label[!fulltree$tip.label %in% prunetips]

#Group the tips to keep
prunetree <- groupOTU(fulltree, focus=keeptips)

#And plot
ggtree(prunetree, layout="fan", aes(color=group))+
scale_color_manual(values=c("lightgrey","black"))+
geom_tiplab()

Tree with pruned tips