查看原文
其他

教你用ggtree绘制高颜值进化树

2017-05-05 Y叔 微生物生态


系统发育分析是我们微生物生态数据分析时一个非常常用的分析项目。前几期,小圆编辑已经跟大家介绍了系统发育树的基本解读及构建方法(戳这里)。然而系统进化树构建完后,我们还需要在美学角度对系统进化树进行修饰,一幅高颜值的配图不仅能提升文章的档次,也更容易获取编辑的青睐。ggtree作为一个实用的系统进化树美化工具,近来受到很多文章青睐。

 



 

图片来源:http://dx.doi.org/10.1128/AEM.02307-16

图片来源:http://journal.frontiersin.org/article/10.3389/fmicb.2017.00543/full

图片来源:http://journal.frontiersin.org/article/10.3389/fmicb.2017.00456/full


上述所有高大上的树状图都是由同一个软件包做出来的——“ggtree”。ggtree是基于R的强大的树状图修饰工具,支持多种格式的输入文件并与其他R包兼容,可以轻松地实现对树状图的各种后期加工、修饰与美化。让你分分钟做出高大上的树状图,助力你发表TOP期刊,走上人生巅峰,赢取CNS......


本期我们有幸邀请到ggtree的开发者Y叔撰文,通过一个有趣的实例来与大家一瞥ggtree的强大功能~

 

phylomoji本来是像上图这么玩的,也就是纯文本慢慢点,调整线条位置。当然纯手工有纯手工的乐趣,不过纯手工很多效果搞不来,比如你搞个circular layout的树来试试,绝对搞不出来。然而我们有ggtree和emojifont啊,这些都小事一桩。

 

 

Phylomoji

下面这个tree_text是正常的nwk格式,只需要传parse=”emoji”给geom_tiplab,见证神奇的时刻就到了。

library(ggtree)
tree_text <- "(((((cow, (whale, dolphin)), (pig2, boar)), camel), fish)

, seedling);"
x <- read.tree(text=tree_text)
ggtree(x, linetype="dashed", color='firebrick') +
    xlim(NA, 7) + ylim(NA, 8.5) +
    geom_tiplab(aes(color=label), parse='emoji', size=14, vjust=0.25) +
    labs(title="phylomoji", caption="powered by ggtree + emojifont")


p <- ggtree(x, layout='circular') +
    geom_tiplab2(aes(color=label), parse='emoji', size=12, vjust=0.25)
print(p)


要画环形树也是同样简单!

 

这个环形树可以随意指定开口角度,转变成扇子型状!

open_tree(p, angle=200)


还能随意旋转!

open_tree(p, angle=60%>% rotate_tree(-75)



注释clades

这个也是同样简单,同样也是parse=”emoji”产生奇迹。

set.seed(123)
tr <- rtree(30)
ggtree(tr) + xlim(NA, 5) +
    geom_cladelabel(node=41, label="chicken", parse="emoji",
                    fontsize=12, align=TRUE, color="firebrick") +
    geom_cladelabel(node=51, label="duck", parse="emoji",
                    fontsize=12, align=TRUE, color="steelblue") +
    geom_cladelabel(node=32, label="family", parse="emoji",
                    fontsize=12, align=TRUE, color="darkkhaki")

Apple Color Emoji

用苹果的emoji也是可以的,不过得产生为svg图形,在safari里打开:

library(ggimage)
library(gridSVG)
p <-  ggtree(x, size=2) + geom_tiplab(size=20, parse='emoji') +
    xlim(NA, 7) + ylim(NA, 8.5) +
    geom_phylopic(image="79ad5f09-cf21-4c89-8e7d-0c82a00ce728",
                  color="firebrick", alpha = .3, size=Inf)

p
ps = grid.export("emoji.svg", addClass=T)


 

References

Yu, Guangchuang, David Smith, Huachen Zhu, Yi Guan, and Tommy Tsan-Yuk Lam. 2017. “.” Methods in Ecology and Evolution 8 (1): 28–36. doi:.


作者简介:

余光创,香港大学公共卫生学院博士生,目前已开发过多个R/Bioconductor包,包括ggtree、ChIPseeker、clusterProfiler、DOSE、GOSemSim和ReactomePA等。

 


本期内容仅是抛砖引玉,想了解更多ggtree在学术上的应用及其他相关R包的用法,或者想与作者本人交流,请扫描下方二维码,关注Y叔原创公众号~




 


“科学思想值得传播”,这里是“微生物生态”。欢迎个人转载,公众号转载请在后台留言获得许可~


本期编辑:李小圆 卢瑟菌

 

本期校稿 坚果儿


您可能也对以下帖子感兴趣

文章有问题?点此查看未经处理的缓存