Как построить дендрограммы с большими наборами данных?
Я использую пакет R (Анализ филогенетики и эволюции) в R, который имеет функциональность рисования дендрограмм. Я использую следующие команды для чтения данных в формате Newick и рисую дендрограмму, используя функцию plot:
library("ape")
gcPhylo <-read.tree(file = "gc.tree")
plot(gcPhylo, show.node.label = TRUE)
Поскольку набор данных довольно большой, невозможно увидеть какие-либо детали на нижних уровнях дерева. Я вижу только черные области, но никаких деталей. Я вижу только несколько уровней сверху, а потом никаких подробностей.
Мне было интересно, есть ли возможность масштабирования функции графика. Я попытался ограничить область, используя xLim и yLim, однако, они просто ограничивают область, и не увеличивают масштаб, чтобы сделать детали видимыми. Либо увеличение, либо отображение деталей без изменения масштаба решит мою проблему.
Я также признателен за знакомство с любым другим пакетом, функцией или инструментом, который поможет мне преодолеть проблему.
Благодарю.
Ответы
Ответ 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]()