web-dev-qa-db-ja.com

大規模なデータセットで樹状図をプロットする方法は?

私は樹状図描画機能を備えたRでape(系統解析と進化の分析)パッケージを使用しています。次のコマンドを使用してデータをNewick形式で読み取り、関数plotを使用して樹状図を描画します。

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

データセットは非常に大きいため、ツリーの下位レベルで詳細を確認することはできません。黒い部分だけが見えますが、詳細はわかりません。上から数レベルしか表示されず、詳細は表示されません。

プロット機能にズーム機能があるかどうか疑問に思っていました。 xLimとyLimを使用して領域を制限しようとしましたが、それらは領域を制限するだけであり、詳細を表示するためにズームしません。ズームするか、ズームせずに詳細を表示すると、問題が解決します。

また、問題の解決に役立つ他のパッケージ、機能、またはツールを知っていただければ幸いです。

ありがとう。

25
Burcu

他の回答で説明されているcut関数は非常に優れたソリューションです。インタラクティブな調査のためにツリー全体を1ページに維持したい場合は、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()
30
MatthewS

指定された高さで樹状図をcutして要素をプロットすることが可能です:

まず、組み込みデータセットUSArrestsを使用してクラスタリングを作成します。次に、dendrogramに変換します。

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

次に、cut.dendrogram指定した高さでカットするには、この場合h=75。これにより、カットのupperビットの系統樹のリストと、カットの下のbranchごとに1つずつの系統樹のリストが生成されます。

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

47
Andrie