簡體   English   中英

將樹狀圖與R中的二部圖結合起來(纏結圖)

[英]Combine dendrogram with bipartite graphs in R (tanglegram)

我目前正在創建一個纏結圖,其中飼養的物種在一側,而飼養的基質在另一側。 但是,我需要輸出也要是一個纏結圖,讓圖表的每一邊都作為樹狀圖的提示。 我目前在Newick格式的種類和基材兩者的系統發育。

我成功地使用了'ape'程序包和plot.phylo()函數來生成2個系統發育樹。 然后我用下面的代碼從這個帖子出口提示的順序:

tree <- ladderize(tree, right = FALSE)
is_tip <- tree$edge[,2] <= length(tree$tip.label)
ordered_tips <- tree$edge[is_tip, 2]
x<-tree$tip.label[ordered_tips]
write.csv(x,file="test.csv",sep ="\t")

然后,我按照提示的順序生成了一個矩陣,供“二分法”軟件包使用。

但是,當然,在二分圖的間距不上dengdrograms的間距匹配,所以我不能只是復制/他們旁邊粘貼到彼此在外部圖像處理程序。 我想知道是否有一種方法可以生成將樹狀圖和二部圖結合起來以在rstudio中生成纏結圖的圖表?

下面是我希望做一個簡化的視覺例如:

我期待2個進化樹,例如,像這樣結合

tree1<-read.tree(text="((C,B),A);")
plot(tree1)

輸出: tree1

tree2<-read.tree(text="((G,F),(E,D));")
plot(tree2)

輸出: tree2

有二部圖

web = matrix(
c(0, 5, 0, 10, 10, 0, 0, 3, 0, 0, 0, 1),
nrow=4,
ncol=3,
byrow = TRUE,
dimnames = list(c("D","E","F","G"),c("A","B","C"))) 
plotweb(web,method="normal",empty="false",text.rot="90")

輸出: 二分圖

若要改為生成曲線,看起來像這樣(我只是做了在圖像編輯器下面,我其實用廣闊的數據集大得多)

所需的輸出: 纏結圖

用尖端標記不匹配的樹繪制纏結圖的一種方法是使用關聯矩陣-列出各個樹中相應分類單元的矩陣。 使用提供的數據,以下代碼將從列和行以及相應的權重中提取名稱。

 assoc = data.frame()
 temp = matrix(NA, ncol = 3, nrow = ncol(web))

 for(i in 1:nrow(web)){
     for(j in 1:ncol(web)){
         temp[j,] = c(rownames(web)[i], colnames(web)[j], web[i,j])
     }
     assoc = rbind(assoc, temp)
 }
head(assoc)
  V1 V2 V3
 1  D  A  0
 2  D  B  5
 3  D  C  0
 4  E  A 10
 5  E  B 10

最后一列可用於設置分類單元之間連接線的權重。

library(ape)
cophyloplot(tree2, tree1, assoc[,1:2], lwd = as.numeric(as.character(assoc[,3])), space = 15)

在此處輸入圖片說明

您可以使用該功能cophylophytools包:

require(phytools)
## Your two trees
tree1 <- ape::rcoal(10)
tree2 <- ape::rcoal(10)

如果這兩個樹有匹配提示標簽,你可以將它們傳遞給cophylo函數phytools創建"cophylo"對象:

## Creating the tanglegram
tanglegram <- phytools::cophylo(tree1, tree2)
# Rotating nodes to optimize matching...
# Done.

並使用S3 "cophylo"方法進行繪圖:

## Plotting the tanglegram
plot(tanglegram)

看看這個優秀的博客文章包含有關如何使用這些詳細信息"cophylo"對象。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM