想象一下,我有一棵树(或树状图)
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形状而不是一个完整的圆圈)我认为这可以通过将树枝着色为白色或浅灰色来完成。如果有人想要动画丢失技巧的树,那将非常有用。
答案 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)))
实际着色来自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()