其他
可视化操作树的拓扑结构
flip 这个函数是生信界业内有名的K2的feature request,它接收两个node number,并交换位置。这两个node number必须要有同一个Parent,不然就不可能随意变换位置,当然你可能会问,那为什么不直接接收它们parent的ID就好了,为什么要输入两个node number,因为ggtree支持polytomy呀。
require(ggtree)
set.seed(2015-07-01)
tr <- rtree(30)
p <- ggtree(tr) + geom_text(aes(label=node))
gridExtra::grid.arrange(p, flip(p, 38, 33), ncol=2)
你可以放到管道里,不断变换,直到你需要的效果为止。
flip(p, 38, 33) %>% flip(53, 58) %>% flip(32, 51)
如果你只是想把某一个clade给翻转过来,不停地flip去达到这效果还是挺麻烦的,所以我提供了rotate函数,你给个node number,整个clade就给你翻转180度。
col = c("black", "firebrick", "steelblue")[groupClade(tr, c(33, 52))]
gridExtra::grid.arrange(ggtree(tr, color=col),
ggtree(tr, color=col) %>% rotate(33) %>% rotate(52),
ncol=2)
Citation
G Yu, DK Smith, H Zhu, Y Guan, TTY Lam. ggtree: an R package for visualization and annotation of phylogenetic trees with their covariates and other associated data. Methods in Ecology and Evolution. doi:10.1111/2041-210X.12628
.