figtree如何编辑进化树_进化树的注释:ggtree

时间:2024-11-21 07:33:37

前几天我们构建了进化树,下一步就是对进化树进行可视化或者编辑注释。对进化树进行可视化的工具有很多,比如iTOL, Evolview等在线工具。但是不得不说,ggtree是一个非常强大的R包,完美继承了ggplot的图层加注释的模式。


基本可视化的内容就不做详细介绍了,可以看文末推荐的博客。主要介绍一下常用的注释语法。

  • 如何绘制带有支持率的进化树

##tree view#############################安装###if (!requireNamespace("BiocManager", quietly = TRUE))#("BiocManager")#BiocManager::install("ggtree")library(ggplot2)library(ggtree) library(treeio)##读取newick格式树文件tree1 "RAxML_bipartitions.result", = ##基础绘图,默认布局是rectangular,即常见的phylogram树状图ggtree(tree, size=1.0) +      xlim(0,0.45) +                         ##x轴的范围  geom_text2(aes(label=support,hjust=-0.1),size=3)+   ##添加注释信息--支持率  geom_treescale() + theme_tree2()+                       theme( = "right")

  • 如果不需要展示枝长/绘制其他类型的树/绘制节点的大小,颜色等

##不展示枝长ggtree(tree, layout="rectangular",branch.length = "none") +#geom_tiplab(size=3, hjust=-0.1) +        ##设置末端tip标签,hjust调整左右距离geom_tippoint(size=1, color="firebrick") +   ##设置末端tip点的大小及颜色geom_nodepoint(color="orange", alpha=1/4, size=2) +   ##设置中间节点node的大小及颜色geom_text2(aes(label=support,hjust=-0.1),size=3)+   theme( = "right")

##绘制圈图ggtree(tree, layout="fan",branch.length = "none") +#geom_tiplab2(size=3, hjust=-0.2) +        ##设置末端tip标签,hjust调整距离  geom_tippoint(size=1, color="firebrick") +   ##设置末端tip点的大小及颜色  geom_nodepoint(color="orange", alpha=1/4, size=2) +   ##设置中间节点node的大小及颜色  geom_text2(aes(label=support,hjust=-0.1),size=3)+     theme( = "right")##layout其他选项ggtree(tree, layout="slanted") ggtree(tree, layout="circular") ggtree(tree, layout="circular",branch.length = "none") ggtree(tree, layout="fan"open.angle=160) ggtree(tree, layout="equal_angle") ggtree(tree, layout="daylight") ggtree(tree, layout="daylight",branch.length = "none")

  • 很多情况下,我们会想要修改末端分类单元的信息,比如说,可能想要加上物种名,或者采样地点,此时可以借助软件包,这个真的好用!

需要准备好样本注释文本

##修改末端标签,即样本名称tr "RAxML_bipartitions.result", = map "", header = T)> head(map)   samples      rename       species   places1 010502-1  Detian02_1     Detian2 010502-3  Detian02_3     Detian3  0923-S1 Jianfeng_S1  Jianfeng4  0923-S2 Jianfeng_S2  Jianfeng5  0923-S3 Jianfeng_S3  Jianfeng6  0923-S4 Jianfeng_S4   Jianfeng#创建一个tip lable的数据框,列名为samplesdf tr@phylo$)    d map, by =dtree1 tr) %  xlim(NA, 0.45) +  geom_tiplab(aes(label=paste0('italic(', rename, ')~bolditalic(', species, ')')), size=3, parse=T)+  geom_text2(aes(label=support,hjust=-0.1),size=3)+  geom_treescale() + theme_tree2()+  theme( = "right")tree1

(我就不放图了)

  • 突出某一节点或者分支

#1 添加bootstrap值区间和节点标签p1 0.  geom_point2(aes(subset=!isTip),fill="red",shape=21,size=1.5) +  scale_color_gradient(high='red', low='darkgreen'+ theme(='right')p1#2: 给指定节点的clade添加标签p1 + geom_cladelabel(node=74,label="A",barsize = 1,color="blue")+ geom_cladelabel(node=97,label="B",barsize = 1,color="orange")+ geom_cladelabel(node=93,label="C",barsize = 1,color="green")#3:高亮指定节点所对应的区域p1 + geom_hilight(node=74,fill = "blue",alpha = 0.6)+ geom_hilight(node=97,fill = "orange",alpha = 0.6) + geom_hilight(node=93,fill = "green",alpha = 0.6)#4:在两个节点之间添加线段和标记p1 + geom_strip(100,93,barsize = 2,color="red",label="B+C")

  • 折叠某一分支

#5:节点折叠node 105collapse(p1, node, 'max') %>% expand(node)collapse(p1, node, 'min') %>% expand(node)collapse(p1, node, 'mixed') %>% expand(node)#多个节点一起collapse(p1, 105, 'max', fill='steelblue', alpha=.4) %>%   collapse(75, 'max', fill='firebrick', color='blue')scaleClade(p1105, .2) %>% collapse(75'max', fill="darkgreen")

因为中间节点加了形状和颜色,整体有点杂乱,也就不修改了。

  • 最后一个比较花的,根据分组信息来添加颜色

##添加物种分组信息tree "RAxML_bipartitions.result", = map "", header = T,  = groupInfo split((tree2 ggtree(tree2, layout="fan",branch.length="none", aes(color=group)) +   #geom_tiplab(size=3, hjust=-0.05) +   geom_text2(aes(label=support,hjust=-0.5),size=2.5)  theme( = "right")dev.off()

我比较常用的差不多就这些了,因为实验原因,省略了tip名称和图例。

更多详细请查看: 

作者余光创博士的博客

/2015/11/to-achieve-the-visualization-and-annotation-of-evolutionary-tree-using-ggtree

/2018/04/rename-phylogeny-tip-labels-in-treeio/

其他博主的介绍

/2020/04/30/5eaa3f6c22804/ 

/?mod=space&uid=255662&do=blog&id=969228

/js9fda2b82cedb/