#r #dendrogram #phylogeny #dendextend
#r #дендрограмма #филогения #dendextend
Вопрос:
Я использую cophyloplot для создания запутанной диаграммы из двух филогенетических деревьев. Метод хорошо работает с небольшими деревьями, но по мере увеличения деревьев выходное изображение остается того же размера, и я не могу найти способ его расширить.
Ниже приведен код для небольшого дерева, который работает нормально (в основном такой же, как в примере: https://www.rdocumentation.org/packages/ape/versions/5.4-1/topics/cophyloplot ):
library(ape)
#two random trees
TreeA <- rtree(10)
TreeB <- rtree(10)
#creation of the association matrix:
association <- cbind(TreeB$tip.label, TreeB$tip.label)
cophyloplot(TreeA, TreeB, assoc = association, length.line = 4, space = 28, gap = 3)
Это то, что создает небольшой древовидный код:
Но когда я использую большие деревья, они становятся нечитаемыми. Например, использование деревьев со 100 подсказками приводит к следующему:
Невозможно прочитать метки подсказок. Как я могу расширить рендеринг, чтобы он был доступен для чтения?
Комментарии:
1. ps: это вопрос r, а не вопрос python. Я исправил теги по этому вопросу.
Ответ №1:
Функция tanglegram имеет множество опций для улучшения вывода получаемого изображения (особенно аргументы lab.cex и margin_inner). Вероятно, самый важный фактор, хотя он является внешним по отношению к tanglegram и является размером вашего графического устройства (через dev.new), поэтому игра с шириной и высотой, вероятно, решит большую часть проблемы
Вот простой автономный код, который показывает, как играть с этими опциями, чтобы получить хороший результат.
########
## Nice example of some colored trees
# see the coloring of common sub trees:
set.seed(23235)
ss <- sample(1:150, 100)
dend1 <- iris[ss, -5] %>%
dist() %>%
hclust("com") %>%
as.dendrogram()
dend2 <- iris[ss, -5] %>%
dist() %>%
hclust("sin") %>%
as.dendrogram()
dend12 <- dendlist(dend1, dend2)
# dend12 %>% untangle %>% tanglegram
dev.new(width=5, height=4)
dend12 %>% tanglegram(common_subtrees_color_branches = TRUE,
lab.cex = .5, margin_inner = 1.3)
Ответ №2:
##Я надеюсь, что этот код поможет для большого дерева
library(ape)
library(phytools)
library(dendextend)
library(viridis)
library(dplyr)
library(phylogram)
tree1 <- read.tree(file = "c1.raxml.bestTree")
tree1 <- midpoint.root(tree1)
tree2 <- read.tree(file = "c1_gubbins.raxml.bestTree")
tree2 <- midpoint.root(tree2)
tree1 <- compute.brlen(tree1)
tree2 <- compute.brlen(tree2)
tree1<- as.dendrogram(tree1)
tree1
tree2<- as.dendrogram(tree2)
dndlist <- dendextend::dendlist(tree1, tree2)
dendextend::tanglegram(dndlist, fast = TRUE, margin_inner = 1.8, lab.cex = 0.3, lwd =
0.5, edge.lwd = 0.5, type = "r")
dev.copy(pdf, 'Discrete001.pdf', width = 10, height = 11)
dev.off()