Как построить дендрограммы с большими наборами данных? - PullRequest
24 голосов
/ 13 сентября 2011

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

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

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

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

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

Спасибо.

Ответы [ 2 ]

47 голосов
/ 13 сентября 2011

Можно 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

30 голосов
/ 13 сентября 2011

Функция 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's associated graphics device (necessary to finalize the output)
dev.off()
...