Как я могу создать большую танглограмму в R, которую можно прочитать и сохранить

Я использую cophyloplot для создания tanglegram из двух филогенетических деревьев. Этот метод хорошо работает с маленькими деревьями, но по мере того, как деревья становятся больше, выходное изображение остается того же размера, и я не могу найти способ его увеличить.

Ниже приведен код для небольшого дерева, которое отлично работает (в основном то же самое, что и в примере по адресу: 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 подсказками приводит к следующему результату: введите здесь описание изображения

Невозможно прочитать этикетки наконечников. Как я могу расширить рендеринг, чтобы он был читабельным?


person Jamie    schedule 17.11.2020    source источник
comment
p.s.: это вопрос r, а не вопрос python. Я исправил теги в этом вопросе.   -  person Tal Galili    schedule 21.11.2020


Ответы (2)


Функция танглограммы имеет множество опций для улучшения вывода получаемого вами изображения (особенно аргументы 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)

введите здесь описание изображения

person Tal Galili    schedule 21.11.2020

##Я надеюсь, что этот код поможет для большого дерева

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()
person rathanin    schedule 20.04.2021