其他
话说有一只蛙,它旅游去了广东,游戏结束。
这篇文章,只想跟大家讲一讲ggtree,你值得拥有的强大的进化树可视化软件,高颜值的图,就在于指尖几行代码中。
最近养蛙很流行,就以蛙为例,读树用read.tree
,然后一个ggtree
的指令,树就画出来了。而你见证神奇的时刻就在于你不断+geom_xxx
加图层,这里我用了geom_tiplab
来加taxa label,而这个可不仅仅是名字哦,用emoji也可以,这里我用的竟然是图片,你没看错,也可以。只要指定geom="image"
就OK,那个本来要打的文本,就会被当成是文件名,然后读图片画图片,一切尽在我的ggimage包。
这个包,曾经送过你帽子,曾经玩过Pokémon:
然后我又加了一个geom_tiplab
的图层,这次正经地打名字了。最后又用蛙儿子,画在右上角,用了ggimage包的geom_image
.
require(ggtree)
nwk <- "((((bufonidae, dendrobatidae), ceratophryidae), (centrolenidae, leptodactylidae)), hylidae);"
x = read.tree(text = nwk)
p <- ggtree(x) + xlim(NA, 7) + ylim(NA, 6.2) +
geom_tiplab(aes(image=paste0(label, '.jpg')), geom="image", offset=2, align=2, size=.2) +
geom_tiplab(geom='label', offset=1, hjust=.5) +
geom_image(x=.8, y=5.5, image="frog.jpg", size=.2) +
ggtitle("Y叔不想养蛙", subtitle="只想养你,毕竟养猪能致富")
p <- p + theme(plot.title=element_text(family="STHeiti"), plot.subtitle=element_text(family="STHeiti"))
ggsave(p, file="ggtree_frog.png", width=8.5, height=7.5)
为了让大家可以重复出上面这个图,我把图片放在了github上,https://github.com/GuangchuangYu/frog_tree。下次我再和你们讲一讲,这好玩的ggimage包,如何与ggtree合体,解决一大票进化树用图片注释的问题。