ggtree画树是不带root edge的,之前在《中空的环形树》一文中,有用户想要加长长的root edge,这样变成环形树的时候,就可以用这个root edge把树给顶出去,这个我给出的解决方案是留白,大家可以回过去看那篇文章。

然而root edge在某些时候还是需要的,我其实也一直有要写的想法,不过因为不是特别需要的东西,一直也就放着,刚好最近有用户在feature request,想要画root edge,于是我就实现了geom_rootedge图层,当你加这个图层的时候,root edge就自动画上去了。

# A phylogeny with a long stem
phylo <- ape::read.tree(text = "(A:1,B:1):20;")

# Plot the phylogeny with the long stem with its stem visible
ape::plot.phylo(phylo, root.edge = TRUE); ape::add.scale.bar()

假设有一颗root edge非常长的树,用ape画出来是这样子的:

现在用ggtreegeom_rootedge,同样可以把root edge画出来。

ggtree(phylo) + geom_rootedge() + geom_treescale(-15, 1, offset=0.01, width=.5)
ggtree(phylo) + geom_rootedge(3) + geom_treescale(-2, 1, offset=0.01, width=.5)

默认使用newick tree里面root的edge length,比如上面(A:1,B:1):20;中的20,如果没有这个数值,那么你+geom_rootedge()就啥都不画。

当然没有这个数值,或者有数值但你不想用,也是可以的,通过指定数据,如上面例子中的+geom_rootedge(3),你可以指定画一定长度的root edge画出来。

上面两行代码画出来的图如下:

这个图层在>= 1.13.0.006以上版本可用。