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

Bur*_*rcu 25 plot r zoom dendrogram

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

__CODE__

__CODE__

__CODE__

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

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

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

谢谢.

And*_*rie 47

可以cut在指定高度处绘制树形图并绘制元素:

首先使用内置数据集创建聚类USArrests.然后转换为dendrogram:

hc <- hclust(dist(USArrests))
hcd <- as.dendrogram(hc)
Run Code Online (Sandbox Code Playgroud)

接下来,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")
Run Code Online (Sandbox Code Playgroud)

在此输入图像描述

  • 它当然是可能的:你只需要在`read.tree`(类是`phylo`的R对象)的输出上调用`as.hclust`来将它转换为类`hclust`的对象. (5认同)
  • 是否可以在特定数量的簇而不是特定高度处切割树状图?我不知道如何绘制树状图k = 10个簇。 (2认同)

Mat*_*ewS 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()
Run Code Online (Sandbox Code Playgroud)