查看原文
其他

ggtree优雅的绘制系统发育树(1)

ANERYAN R语言数据分析指南 2023-06-15

欢迎关注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交流群」,与全国各地上千位小伙伴交流

「关注下方公众号下回更新不迷路」,如需要加入微信交流群可添加小编微信,请备注单位+方向+姓名


往期推荐



ggplot2优雅的绘制分类条形图

ggplot2优雅的绘制径向条形图

ggplot2优雅的绘制配对箱

ggplot2优雅的绘制曲面条形图

ggplot2优雅的绘制哑铃图(增强版)

ggplot2优雅绘制小清新版箱线图

genoPlotR绘制基因结构图

使用ggbump带你绘制更加精美的地图

ggplot2绘制围棋棋局

人生苦短我用manjaro


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

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