其他
[ggtree] 使用自己的数据来给进化树上色
这是个老问题了,在google group被问过(https://groups.google.com/forum/#!topic/bioc-ggtree/4GgivKqVjB8),在github上也被问过(https://github.com/GuangchuangYu/ggtree/issues/76, https://github.com/GuangchuangYu/ggtree/issues/105)如此反复提问的问题,我必然是放在FAQ上的,然而很多人都不看,还继续来问,于是写个博客文,再有人来问,我就甩来他们博客,自己看去。
给进化树上色对于ggtree来讲非常简单,不外乎是aes(color=VAR)这样的语法,不管是连续型变量还是离散性变量都是通吃的。
这里的问题是使用用户自己的数据,这当然也没问题,ggtree提供了一个操作符%<+%给用户强插数据!强插了之后,不就又可以aes(color=VAR)了么!
这个问题本身解决方案是有两种的,一种是把用户数据存入到ggtree支持的进化树对象中,然后直接就可以用ggtree来上色了,另一种方案就是上面提到的强插数据。
首先来看一下第一种,这里使用phylobase定义的phylo4d,这个可以拿来存一些数据,而这个对象是ggtree支持的,ggtree几乎支持了其它所有R包定义的进化树类(class),是R社区里万能的进化树可视化软件哟。
存了这对象之后,一条语句就上色了:
ggtree(g2, aes(color=I(color)))另一种方法就是纯粹使用ggtree的%<+%操作符,还是使用上面的随机树,强插数据,然后就可以使用数据中的变量来重新上色。