跟著Nature microbiology學畫圖~R語言ggtree展示進化樹

今天要模仿的圖片來自于論文 Core gut microbial communities are maintained by beneficial interactions and strain variability in fish。期刊是 Nature microbiology

image.png

今天重復的圖片是Figure1中的聚類樹圖

image.png
論文中寫道

Hierarchical clustering dendrogram with jackknife support (numbers on the branches; only values above 50 are shown in the tree).

所以論文中實際的數據做的是聚類分析,而并不是進化樹。他這里做聚類分析也能夠獲得每個節點對應的支持率。這個如何實現我暫時還不知道。為了模仿這個圖,下面的輸入數據我直接使用進化樹文件了,因為構建進化樹的時候能夠很方便的獲得節點的支持率信息。

首先準備構建進化樹需要用到的fasta格式序列文件

這里用到的數據集來自 網址 https://www.kuleuven.be/aidslab/phylogenybook/Data_sets.html

image.png

這本 The Phylogenetic Handbook second edition 不知道大家有沒有電子版可以分享呀!

首先是做多序列比對,這里我使用mafft
mafft --auto ggtree_practice.fasta > ggtree_practice_aligned.fasta
構建進化樹,我是用iqtree
iqtree -s ggtree_practice_aligned.fasta -bb 1000

得到樹文件ggtree_practice_aligned.fasta.treefile

接下來是在R語言里的操作

首先是準備一個分組的數據文件

數據總共三列

  • 第一列是 構建進化樹用到的fasta文件的序列名,這里注意列明用label,不要用其他
  • 第二列是分組信息,用來填充不同的顏色
  • 第三列也是分組信息,用來映射形狀

第二列和第三列的列名就是圖例上想顯示什么就用什么

image.png
加載需要用到的包
library(ggtree)
library(treeio)
library(tidytree)
  • treeio用來讀入進化樹
  • tidytree用來將分組信息整合給進化樹
  • ggtree用來可視化展示進化樹
讀入進化樹和分組信息數據
tree<-read.newick("ggtree_practice_aligned.fasta.treefile",
                  node.label = "support")
tree<-read.newick("ggtree_practice_aligned.fasta.treefile",
                  node.label = "support")
d<-read.csv("ggtree_group_info.csv",header=T)
d
將樹文件和分組信息整合到一起
trs<-full_join(tree,d,by='label')
去掉支持率小于50的信息
tree@data$support<-ifelse(tree@data$support<50,NA,tree@data$support)
最后一步就是畫圖了
ggtree(trs,layout = "circular",branch.length = "none")+
  #geom_tiplab(offset = 0.01)+
  geom_tippoint(aes(shape=Diet,color=Gut.compartment),
                size=5)+
  scale_shape_manual(values = c(16,17,18,15))+
  geom_text2(aes(label=support,angle=angle),hjust=-0.2)+
  scale_color_manual(values = c("#800080","#ff8000","#008080"),
                     name="Gut_compartment")+
  guides(color=guide_legend(order = 1))
image.png

以上代碼的具體作用就不在這篇推文里進行介紹了,爭取出一期視頻介紹每個函數的作用。如果需要這篇推文的示例數據直接在文末留言就好了。
這里遇到一個問題是有沒有辦法給圖例的文本填充不同的顏色呢?。歡迎大家在文末留言討論這個問題呀!

參考資料

http://yulab-smu.top/treedata-book/chapter4.html

歡迎大家關注我的公眾號
小明的數據分析筆記本

?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容