Подтвердить что ты не робот

Как построить дендрограммы с большими наборами данных?

Я использую пакет R (Анализ филогенетики и эволюции) в R, который имеет функциональность рисования дендрограмм. Я использую следующие команды для чтения данных в формате Newick и рисую дендрограмму, используя функцию plot:

library("ape")
gcPhylo <-read.tree(file = "gc.tree")
plot(gcPhylo, show.node.label = TRUE)

Поскольку набор данных довольно большой, невозможно увидеть какие-либо детали на нижних уровнях дерева. Я вижу только черные области, но никаких деталей. Я вижу только несколько уровней сверху, а потом никаких подробностей.

Мне было интересно, есть ли возможность масштабирования функции графика. Я попытался ограничить область, используя xLim и yLim, однако, они просто ограничивают область, и не увеличивают масштаб, чтобы сделать детали видимыми. Либо увеличение, либо отображение деталей без изменения масштаба решит мою проблему.

Я также признателен за знакомство с любым другим пакетом, функцией или инструментом, который поможет мне преодолеть проблему.

Благодарю.

4b9b3361

Ответ 1

Функция cut, описанная в другом ответе, является очень хорошим решением; если вы хотите сохранить все дерево на одной странице для какого-либо интерактивного исследования, вы также можете построить большую страницу в PDF файле.

Полученный PDF файл векторизован, поэтому вы можете приблизить его к своему любимому PDF-средству без потери разрешения.

Вот пример того, как перенаправить вывод в PDF:

# Open a PDF for plotting; units are inches by default
pdf("/path/to/a/pdf/file.pdf", width=40, height=15)

# Do some plotting
plot(gcPhylo)

# Close the PDF file associated graphics device (necessary to finalize the output)
dev.off()

Ответ 2

Можно cut создать дендрограмму с заданной высотой и нарисовать элементы:

Сначала создайте кластеризацию с использованием встроенного набора данных USArrests. Затем преобразуйте в dendrogram:

hc <- hclust(dist(USArrests))
hcd <- as.dendrogram(hc)

Затем используйте cut.dendrogram для вырезания на заданной высоте, в данном случае h=75. Это создает список дендрограмм для бит upper разреза и список дендограмм, по одному для каждого branch ниже разреза:

par(mfrow=c(3,1))

plot(hcd, main="Main")
plot(cut(hcd, h=75)$upper, 
     main="Upper tree of cut at h=75")
plot(cut(hcd, h=75)$lower[[2]], 
     main="Second branch of lower tree with cut at h=75")

enter image description here