如何用大数据集绘制树形图?

时间:2011-09-13 15:00:42

标签: r plot zoom dendrogram

我在R中使用具有树状图绘制功能的猿(分析系统发育和进化)包。我使用以下命令以Newick格式读取数据,并使用绘图函数绘制树形图:

library("ape")

gcPhylo <-read.tree(file = "gc.tree")

plot(gcPhylo, show.node.label = TRUE)

由于数据集非常大,因此无法在树的较低层中看到任何细节。我只看到黑色区域,但没有细节。我只能从顶部看到几个级别,然后没有细节。

我想知道绘图功能是否有任何缩放功能。我尝试使用xLim和yLim来限制区域,但是,它们只是限制了区域,并且不进行缩放以使细节可见。缩放或在不缩放的情况下使细节可见将解决我的问题。

我也很高兴知道任何其他包,功能或工具可以帮助我克服这个问题。

感谢。

2 个答案:

答案 0 :(得分:47)

可以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

答案 1 :(得分:30)

另一个答案中描述的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()