其他
ggtree优雅的绘制系统发育树(1)
欢迎关注R语言数据分析指南
❝本节来介绍如何使用「Y叔开发的ggtree包」来绘制常见的进化树,先从最基础的案例开始介绍,后续再引入各种更加复杂的案例,下面来看具体操作,示例数据无任何实际意义
❞
加载R包
package.list=c("tidyverse","ggsci","ggtree","treeio")
for (package in package.list) {
if (!require(package,character.only=T, quietly=T)) {
install.packages(package)
library(package, character.only=T)
}
}
导入数据
tree <- read.newick("tree.nwk",node.label = "support")
❝tree.nwk文件可先通过「mafft」软件进行多序列比对后通过「fasttree」或者其它软件生成
❞
先来绘制一个简单的小案例,后面的美化细节均在此基础上进行
tree %>% ggtree(branch.length = "none",layout = "circular",
linetype=1,size=0.5,ladderize = T)+
geom_tiplab(size=3,family="Times",fontface="italic",color="black",offset=.5)
通过上述代码绘制出了树的骨干,下面来进行进一步的优化,通过「MRCA」函数可以获取两节点范围间节点号,或单个节点的节点号,通过此我们可以给进化树添加背景与分组彩带
获取节点号
MRCA(tree,"Ataa14","Ataa15")
MRCA(tree,"Ataa12","Ataa4")
MRCA(tree,"Ataa17","Ataa34")
MRCA(tree,"Ataa14")
MRCA(tree,"Ataa15")
MRCA(tree,"Ataa12")
MRCA(tree,"Ataa4")
MRCA(tree,"Ataa17")
MRCA(tree,"Ataa34")
美化进化树
tree %>% ggtree(branch.length = "none",layout = "circular",
linetype=1,size=0.5,ladderize = T)+
geom_point2(aes(subset=!isTip,fill=support),shape=21,size=2,show.legend = F)+
scale_fill_continuous(low="#ECCBAE",high="#F98400")+
geom_cladelab(node=44,label="",barcolor="#3B9AB2",extend=0.5,offset=1.2,barsize=15,alpha=0.1)+
geom_cladelab(node=71,label="",barcolor="#78B7C5",extend=0.5,offset=1.2,barsize=15,alpha=0.5)+
geom_cladelab(node=49,label="",barcolor="#046C9A",extend=0.5,offset=1.2,barsize=15,alpha=0.5)+
geom_tiplab(size=3,family="Times",fontface="italic",color="black",offset=.5)+
scale_fill_continuous(low="#ECCBAE",high="#F98400")+
labs(fill="bootstrap")+
layout_fan(angle=50)+ # 加大开口
theme(legend.position = "non")+
geom_strip(1,43,label="Group I",offset=4,barsize =2,extend=0.5,color="#DC0000FF",
hjust="center",align=T,offset.text=1.2,angle=-60)+
geom_strip(28,39,label="Group II",offset=4,barsize =2,extend=0.5,color="#3C5488FF",
hjust="center",align=T,offset.text=1.2,angle=5)+
geom_strip(5,23,label="Group III",offset=4,barsize =2,extend=0.5,color="#00A087FF",
hjust="center",align=T,offset.text=1.2,angle=-32)
代码获取
❝本文介绍的只是「ggtree」最基础的一些功能,后续还会写一些更加复杂的案例,通过此可以清楚直观的看出「ggtree」的强大之处,当然最好的学习资料还是去观看作者写的官方文档;喜欢的小伙伴欢迎转发此文档附上一句话到朋友圈「30分钟后台截图给我」,即可获取对应的数据及代码,如未及时回复可添加我的微信
❞
欢迎大家扫描下方二位码加入「QQ交流群」,与全国各地上千位小伙伴交流
「关注下方公众号下回更新不迷路」,如需要加入微信交流群可添加小编微信,请备注单位+方向+姓名
往期推荐