В настоящее время я работаю над созданием танглограммы, в которой выращиваемые виды находятся на одной стороне, а субстрат, на котором выращивается, — на другой стороне. Однако мне нужно, чтобы на выходе также была танглограмма, в которой каждая сторона диаграммы была бы кончиками дендрограммы. В настоящее время у меня есть филогении как видов, так и субстратов в формате Ньюика.
Я успешно использовал 'ape' и функцию plot.phylo()
для создания двух филогений. Затем я использовал следующий код из this post для экспорта порядка подсказок:
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")
Затем я использовал порядок подсказок для создания матрицы для использования в 'двусторонний' пакет.
Однако, конечно, расстояние на двудольном графике не совпадает с расстоянием на денгдрограммах, поэтому я не могу просто скопировать/вставить их рядом друг с другом во внешней программе обработки изображений. Мне интересно, есть ли способ создать диаграмму, которая объединяет дендрограммы и двудольный график для создания танглограммы в 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")
Вывод: двусторонний график
Чтобы вместо этого создать график, который выглядит так (я только что сделал следующее в редакторе изображений, обширный набор данных, который я фактически использую, намного больше)
Желаемый результат: tanglegram