【R语言】ggtree绘制进化树

绘制进化树的方法有很多,入门的MEGA。美化比较好用的,也是我经常用的工具如iTOL,evolview等。

今天测试了另外一个别的paper和笔记中经常用的的一个R包:ggtree,据说可以轻轻松松绘制高端进化树。所以闲暇之余就测试了一下。

======安装========

source("https://bioconductor.org/biocLite.R")

biocLite("ggtree")

或者:

# Bioconductor version

library(BiocManager)

BiocManager::install("ggtree")

 

# github version

devtools::install_github("YuLab-SMU/ggtree")

===例子测试======

library(ggtree)

library(treeio)

library(tidytree)

以这个test.tree作为测试:

tree <- read.newick("test.tree",node.label = "support")

注:也可以读取其它格式的tree文件

read.beast()       ## for parsing output of BEASE

read.codeml()      ## for parsing output of CODEML (rst andmlc files)

read.codeml_mlc()  ## for parsing mlc file (output of CODEML)

read.hyphy()       ## for parsing output of HYPHY

read.jplace()      ## for parsing jplace file includingoutput from EPA and pplacer

read.nhx()         ## for parsing NHX file includingoutput from PHYLODOG and RevBayes

read.paml_rst()    ## for parsing rst file (output of BASEMLand CODEML)

read.r8s()         ## for parsing output of r8s

read.raxml()       ## for parsing output of RAxML

//显示进化树

ggtree(tree)

ggtree(tree, color="firebrick", size=1, linetype="dotted")

# 默认情况下,树以ladderize形式查看,可以设置参数ladderize= FALSE以禁用它

ggtree(tree, ladderize=FALSE)

//设置branch.length="none"只查看树的拓扑结构

ggtree(tree,branch.length="none")

//layout参数设置不同的展示布局,默认为“rectangular”

ggtree(tree, layout="rectangular") +ggtitle("rectangular (phylogram)")

ggtree(tree, layout="rectangular",branch.length= "none") + ggtitle("rectangular (cladogram)")

ggtree(tree, layout="slanted") +ggtitle("slanted (phylogram)")

ggtree(tree, layout="circular") +ggtitle("circular (phylogram)")

ggtree(tree, layout="circular",branch.length ="none") + ggtitle("circular (cladogram)")

ggtree(tree, layout="fan", open.angle=160) +ggtitle("fan (phylogram)")

ggtree(tree, layout="equal_angle") +ggtitle("equal angle (unrooted)")

ggtree(tree, layout="daylight") +ggtitle("daylight (unrooted)")

ggtree(tree, layout="daylight",branch.length ="none") + ggtitle("daylight (cladogram)")

显示树的尺度和时间标度

ggtree(tree) + geom_treescale()

ggtree(tree) + theme_tree2()

ggtree(tree) + geom_treescale(fontsize=8, linesize=1, offset=-0.5) + theme_tree2()

显示树的节点和节点标签

# 使用geom_nodepoint,geom_tippoint或者geom_point添加内部节点

 ggtree(tree) + geom_point(aes(shape=isTip, color=isTip), size=3)

例如通过控制node,tip或者point来一起控制节点的美观:

ggtree(tree) + geom_nodepoint(color="red", alpha=1/4, size=5)+geom_tippoint(color="blue", alpha=1/4, size=10,shape=1)

使用geom_nodelab和geom_tiplab显示节点标签

ggtree(tree) + geom_nodepoint(color="blue",alpha=1/4, size=5) + geom_tiplab(size=3, color="red")

ggtree(tree) + geom_tiplab(size=3, color="red")  + geom_nodelab(aes(subset=!isTip,label=node),hjust=-.3,color="blue")

设置不同的主题

ggtree(tree, color="red") +theme_tree("black")  //就是换背景色

显示树上所有节点的序号

ggtree(tree) +geom_text2(aes(label=node),hjust=-.3,color="red")

 

当然,也可以显示内部节点的序号

ggtree(tree) +geom_text2(aes(subset=!isTip,label=node),hjust=-.3,color="red")

给指定节点的clade添加标签

ggtree(tree) + geom_text(aes(label=node),hjust=-.3,color="red") + geom_cladelabel(node=19,label="Group A",barsize = 2,color="blue") +geom_cladelabel(node=15,label="Group B",barsize = 2,color="green") 

高亮指定节点所对应的区域

ggtree(tree) + geom_text(aes(label=node),hjust=-.3,color="red") + geom_hilight(node=15,fill = "green",alpha = 0.6)+geom_cladelabel(node=15,label="Group B",barsize = 2,color="green") 

在两个节点之间添加线段和标记

ggtree(tree) + geom_text(aes(label=node),hjust=-.3,color="red") + geom_strip(17,15,barsize = 1,color="blue",label="A")

====其它数据和进化树关联起来=====

Kat Holt开发了plotTree(https://github.com/katholt/plotTree)包含了R和python两个版本,可以支持把一些相关的信息(比如taxa info,SNP位点,matrix等)和进化树关联起来,这样可以使图片更好看。

下载:

https://github.com/katholt/plotTree

然后导入包:

source("plotTree.R")

plotTree(tree="tree.nwk")

plotTree(tree="tree.nwk",ancestral.reconstruction=F,tip.colour.cex=1,cluster=T,tipColours=c("black","purple2","skyblue2","grey"),lwd=1,infoFile="info.csv",colourNodesBy="location",treeWidth=10,infoWidth=10,infoCols=c("name","location","year"))

//加入一些额外的描述信息,下为info.csv信息

plotTree(tree="tree.nwk",heatmapData="pan.csv",ancestral.reconstruction=F,tip.colour.cex=1,cluster=T,tipColours=c("black","purple2","skyblue2","grey"),lwd=1,infoFile="info.csv",colourNodesBy="location",treeWidth=5,dataWidth=20,infoCols=NA)  

//也可以加入heatmap数据

pan.csv里数据

plotTree(tree="tree.nwk",heatmapData="res_genes.csv",ancestral.reconstruction=F,tip.colour.cex=1,cluster=F,heatmap.colours=c("white","grey","seagreen3","darkgreen","green","brown","tan","red","orange","pink","magenta","purple","blue","skyblue3","blue","skyblue2"),tipColours=c("black","purple2","skyblue2","grey"),lwd=1,infoFile="info.csv",colourNodesBy="location",treeWidth=10,dataWidth=10,infoCols=c("name","year"),infoWidth=8)

//基因信息,其实也相当于离散型的heatmap,下面为res_genes.csv内容

plotTree(tree="tree.nwk",barData="bar.csv")

//也可以通过barData添加bar图

当然很好也可以利用facet_plot实现。

本文使用 文章同步助手 同步

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 215,384评论 6 497
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 91,845评论 3 391
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 161,148评论 0 351
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 57,640评论 1 290
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 66,731评论 6 388
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 50,712评论 1 294
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,703评论 3 415
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,473评论 0 270
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,915评论 1 307
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,227评论 2 331
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,384评论 1 345
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,063评论 5 340
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,706评论 3 324
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,302评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,531评论 1 268
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 47,321评论 2 368
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,248评论 2 352

推荐阅读更多精彩内容