今天要模仿的圖片來自于論文 Core gut microbial communities are maintained by beneficial interactions and strain variability in fish。期刊是 Nature microbiology
今天重復的圖片是Figure1中的聚類樹圖
論文中寫道
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
這本 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,不要用其他
- 第二列是分組信息,用來填充不同的顏色
- 第三列也是分組信息,用來映射形狀
第二列和第三列的列名就是圖例上想顯示什么就用什么
加載需要用到的包
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))
以上代碼的具體作用就不在這篇推文里進行介紹了,爭取出一期視頻介紹每個函數的作用。如果需要這篇推文的示例數據直接在文末留言就好了。
這里遇到一個問題是有沒有辦法給圖例的文本填充不同的顏色呢?。歡迎大家在文末留言討論這個問題呀!
參考資料
http://yulab-smu.top/treedata-book/chapter4.html
歡迎大家關注我的公眾號
小明的數據分析筆記本