#美格基因,發現微生物之美#如何讓微生物組衝擊圖動起來呢?趕緊往下看看吧!以下文章來源於紅皇后學術 ,作者紅皇后學術。
為什麼要用桑基圖?
桑基圖 (Sankey diagram)是一種展現數據之間流動和相互關係的圖像,類似於一種網絡圖,通過不同層級節點之間的連接以及連接邊的寬度,展示數據之間的流動關係。
在微生物群落分析中,桑基圖可以用來展示不同分類學水平微生物的豐度及其從屬關係,可以簡單的說是一種包含物種豐度信息的系統發育樹。
在一些時間序列或大規模區域樣本的研究中,研究人員通常都會非常關注核心微生物組,也就是在一系列時間序列樣品或各種不同類型樣品中共有的微生物,這些微生物代表了樣本中最基本也是最重要的功能微生物。
使用桑基圖可以達到同時展示核心微生物組成、系統發育關係以及相對豐度的目的。
桑基圖的繪製
可以使用R語言的「d3Network」包進行桑基圖的繪製,該包是在R環境下基於D3.j繪製桑基圖的專門的包。
還是照例先介紹一下繪圖主函數的各項參數。
d3Sankey(Links, Nodes, Source, Target, Value = NULL, NodeID, height = 600,
width = 900, fontsize = 7, nodeWidth = 15, nodePadding = 10,
parentElement = "body", standAlone = TRUE, file = NULL,
iframe = FALSE, d3Script = "http://d3js.org/d3.v3.min.js")
各參數意義:
Links,用於繪圖的數據框,給出了節點及其關聯信息;
Nodes,包含節點ID及相關信息的數據框;
Source,Links文件中指定Source源的向量;
Target,Links文件中指定Target的向量;
Value,Links文件中指定節點關聯邊寬度的向量;
NodeID,Nodes文件中指定節點ID名稱的向量;
height,輸出圖像的高度;
width,輸出圖像的寬度;
fontsize,圖像中節點標籤文字的字號;
nodeWidth,用於指定每一個節點的寬度;
nodePadding,介紹裡的英語沒看明白是什麼意思;
file,輸出文件的名稱,要輸出html格式。
3dNetwork包繪製桑基圖需要兩個文件,一個是提供節點及其關聯信息的數據框,另一個是提供節點名稱及其性質的數據框。
我們首先要手動製作一個原始的數據文件,結構類似於網絡分析的輸入文件,包含三列信息,第一列為source,內容為節點的名稱,第二列為target,內容為屬於該source的target名稱,第三列為value,及其對應target的相對豐度數據。
我的示例數據格式如下,數據是一套時間序列微生物群落樣本的共有OTU,之後手動計算各物種的豐度及其對應的系統發育層次信息。
3dNetwork輸入的文件要求使用數字來定義source和target的現實順序,再用nodes文件將節點名稱於數字匹配,因此要對輸入文件進行一定的處理。
sankey <- read.table("sankey.txt",header = TRUE,sep = "\t")
nodes <- data.frame(name = unique(c(as.character(sankey$source),as.character(sankey$target))),stringsAsFactors = FALSE)
nodes$ID <- 0:(nrow(nodes)-1)
sankey <- merge(sankey,nodes,by.x = "source",by.y = "name")
sankey <- merge(sankey,nodes,by.x = "target",by.y = "name")
colnames(sankey) <- c("X","Y","value","source","target")
sankey <- subset(sankey,select = c("source","target","value"))
nodes <- subset(nodes,select = c("name"))
之後就可以繪製圖像了。
d3Sankey(Links = sankey,Nodes = nodes,fontsize = 20,
Source = "source",Target = "target",Value = "value",
NodeID = "name",file = "Sankey.html",
width = 1200,height = 900)
打開輸出的html文件,我們會發現部分圖像的元素存在一定的重疊,並且有些節點的順序可能需要修改。
這一步就非常簡單了,輸出的結果是可交互的,直接滑鼠拖動節點模塊即可改變其位置。
您可能還喜歡:美格基因會議推薦:2020首屆微生態醫學高峰論壇
代謝組|代謝組IF8分以上發文思路
更多精彩文章都在美格基因公眾號了。