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

2021-02-13 小明的數據分析筆記本

今天要模仿的圖片來自於論文 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)

讀入進化樹和分組信息數據

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

歡迎大家關注我的公眾號

小明的數據分析筆記本

相關焦點

  • R語言ggtree按照指定的節點旋轉樹
    R語言裡的ggtree這個包可視化進化樹有一個默認的順序,如果想要改變枝的相對位置應該如何實現呢?
  • 使用ggtree實現進化樹的可視化和注釋
    進化樹看起來和層次聚類很像。有必要解釋一下兩者的一些區別。層次聚類的側重點在於分類,把距離近的聚在一起。而進化樹的構建雖然也可以說是一個聚類過程,但側重點在於推測進化關係和進化距離(evolutionary distance)。
  • ggtree使用大全,進化樹編輯、美化一手資料全掌握
    進化樹展示的是進化關係,簡單說就是親緣關係,通常是使用物種的遺傳序列(如 DNA 序列、胺基酸序列等)來構建的。進化樹看起來和層次聚類很像,這兩者有木有區別呢?上圖展示的是典型的系統發育樹。進化樹數據格式進化樹的數據格式有多種,常見的有 Newick、NEXUS 及 Phylip。Newick 格式Newick 格式是最常見的使用最廣泛的進化樹數據格式。
  • 跟著Nature microbiology學畫圖~R語言ggplot2畫柱形圖
    期刊是 Nature microbiologyimage.png今天重複的圖片是Figure3中的柱形圖
  • 詳解進化樹
    系統發育樹也稱為系統發生樹(phylogenetic tree)、聚類樹或者進化樹(evolutionary tree)。以樹狀結構表示各個節點的進化關係,枝點可以是物種、同一物種的樣本、基因等單元。獲得nwk格式的進化樹後,需要對其進行展示,以便從直觀上判斷材料間的聚類關係,界面版的MEGA自帶簡單的展示功能,可以對進化樹進行展示,但其功能較為簡單,無法滿足著色、添加額外信息等較為個性化的要求。
  • 用圖層疊加方法繪製環形進化樹
    開發背景系統發育樹可以應用於群體遺傳學,生態學以及流行病學等研究領域。隨著相應研究的深入,我們往往需要將進化樹與相關數據聯繫起來。比如生態學中的,末端節點的物種分類,豐度等等信息。通過這樣的聯繫也便於比較研究。
  • 一文解決蛋白質家族分析及進化樹構建
    最大似然法考察數據組中序列的多重比對結果,優化出擁有一定拓撲結構和樹枝長度的進化樹,這個進化樹能夠以最大的概率導致考察的多重比對結果;距離樹考察數據組中所有序列的兩兩比對結果,通過序列兩兩之間的差異決定進化樹的拓撲結構和樹枝長度,基於距離的方法有UPGMA、ME(Minimum Evolution,最小進化法)和NJ(Neighbor-Joining,鄰接法)等;最大節約法考察數據組中序列的多重比對結果
  • facet_plot: 關聯數據和進化樹的通用方法
    ggtree 提供gheatmap 可視化熱圖和 msaplot 可視化多重序列比對,並且和進化樹關聯起來。
  • GraPhlAn:最美進化樹或層級分類樹學習筆記
    是一個可視化進化樹和基於分類等級繪製層級分類樹的工具。可以製作分類樹是它不同於R包ggtree和iTOL的地方。然就進化樹而言,iTOL功能最為全面,ggtree最容易上手,從功能上來講graphlan很多地方不如iTOL,比如,iTOL無限制添加的數據集,外環可以製作各種圖形包括箱線圖等,可以使用多種符號填充外環,但是Graphlan就不能這麼隨便了,只能使用兩個符號填充外環。再多的環屬性也就是設置環數量和顏色,透明度了。
  • 【重磅】Nature:跟R語言一起探索未知的世界
    (equity prices);還有些軟體,比如ggplot2(參見ggplot2.org)能夠幫助科研人員使用漂亮的圖片將數據結果展示出來。* 可以在R的網站CRAN (Comprehensive R Archive Network)http://cran.r-project.org上安裝R語言。這裡提供了關於這個系統的介紹: go.nature.com/jh9jb8。* 很多科研人員都建議使用功能強大的、免費的交互式軟體RStudio,詳見www.rstudio.com。
  • 我寫了一個簡單的進化樹可視化/注釋工具
    提到進化樹可視化/注釋工具,以我個人的認知,那麼現在可能只有兩個優秀的工具。一個是ITOLs,一個是ggtree。前者便不過多說明,是一個網頁工具。而後者則是你Y叔我大溼兄(公眾號:biobabble的運營者)。應是有部分朋友知道我從來就喊你Y叔叫大溼兄,也基本只有我這麼喊(我的意思是,不是每個人都能這麼喊)。
  • 跟著Nature Methods學畫圖:R語言ggplot2畫小提琴圖
    今天推文的主要內容是介紹如何使用R語言繪製散點圖並且添加擬合曲線和置信區間這篇論文是在簡書 土豆學生信 分享的內容看到的。
  • 跟著Nature Methods學畫圖:R語言ggplot2散點圖並添加擬合曲線和置信區間
    今天推文的主要內容是介紹如何使用R語言繪製散點圖並且添加擬合曲線和置信區間這篇論文是在簡書 土豆學生信 分享的內容看到的。最基本的散點圖library(ggpubr)ggscatter(mydf,x="DPS",y="ISG")這裡需要注意的是想x,y後面跟著的值需要加雙引號
  • 進化樹作圖專題:進化樹的幾種分類
    本期承接上期進化樹作圖專題1的內容,和大家分享一下關於進化樹圖的幾種分類。 依據不同規則,樹的分類可以有很多種。由於本專題主要針對於作圖,所以這裡主要的原則就是——樹的外形。所謂「根」,就是一棵樹上的所有基因或物種的最近共同祖先(most recent common ancestor,MRCA)。
  • 跟著Nature Genetics學畫圖:R語言ggplot2畫折線圖並添加誤差線
    折線圖添加誤差線是非常常用的一種可視化方法,今天的推文介紹一下使用R語言的ggplot2作圖的代碼。
  • GraPhlAn教程中文版——超炫物種樹進化樹繪製
    可以使用包含樹根所有名稱的完整標籤或僅使用最後一級來指定進化枝(如果最後一級名稱不是唯一的,則該命令會影響多個匹配進化枝)。(可選)在進化枝名稱的末尾,可以添加以下字符之一:+,*,^。其中annot_1.txt中使用的graphic_tree_option是:clade_marker_size 是表示樹內進化枝根的標記的大小。
  • 跟著「小海龜」 暢遊畫圖世界
    Python 中的turtle 模塊受啟發於在歐美有著廣泛基礎且歷史悠久的LOGO 語言。LOGO語言形式非常直接,通過一組簡單的指令就可以指揮計算機在屏幕上繪製出或極具現代感或抽象複雜的圖像。因為它的強大和便於學習,使得很多青少年對數學、邏輯和計算機等相關學科產生了濃厚的興趣。
  • 重現2篇Nature中GraPhlAn繪製的超高顏值物種樹Cladogram
    Nature. 2015, 528: 364-369. doi:10.1038/nature16192還有這樣的圖Nature Biotechnology. 2019, 37: 676-684. doi:10.1038/s41587-019-0104-4是不是很漂亮之前公眾號已經為大家介紹了GraPhlAn進化樹的繪製方法,如下文:今天就帶大家根據特徵表(OTU table)、和物種注釋(Taxonomy
  • 推薦一份ggplot2畫圖的學習資料
    很好的R語言畫圖學習資料。連結是 https://www.datanovia.com/en/blog/ggplot-examples-best-reference/這份學習資料裡我比較感興趣的是以下兩幅圖,第一幅是image.png這個和之前圖文中 跟著Nature Couumincations