3

Rで高解像度の樹状図を生成しようとしています。

難しいのは、200を超えるリーフノードがあり、各ノードが文字列で識別されることです。これらの文字列ラベルのそれぞれが、生成された(印刷された)プロットで読み取り可能であることを確認したいと思います。

もう1つは、元のx軸(リーフノードに対応)をy軸に切り替え、元のy軸をx軸に切り替えたいということです。より明確なデモンストレーションの目的で、プロットの上部にもう1つのx軸(切り替えられたプロットの距離情報に対応)を追加したいと思います。Rでこれをどのように行うことができますか?

4

2 に答える 2

5

これは、標準のR関数を使用して実現できます。

樹状図をプロットする

距離行列から樹状図をプロットするには、このhclust関数を使用できます。使用可能なアルゴリズムの詳細については、manページを参照してください。

# To produce a dummy distance matrix
distMatrix <- dist(matrix(1:9, ncol=3))

# To convert it into a tree
tree <- hclust(distMatrix)

プロットの場合、dendrogramクラスは便利なplotメソッドを提供します。hclust出力を樹状図に変換してプロットするだけです:

dendro <- as.dendrogram(tree)

このメソッドは、horizX軸とY軸を切り替えることができる引数を提供し、以下をテストします。

plot(dendro, horiz=TRUE)
plot(dendro, horiz=FALSE)

サイズを管理する

読みやすくするために、画像のエクスポートに使用するデバイスによって異なります。Rは巨大な画像を生成できます。サイズと解像度を設定するのはユーザー次第です。詳細については、マニュアルページを参照してpngくださいpdf(幅、高さ、解像度は興味深い議論です)。

従うべきもう1つのトラックは、グラフィックパラメータです。さまざまな値で遊んでcex、ラベルのサイズを変更できるようになります。詳細については、のマニュアルページを参照してparください。

読みやすさは非常に人間指向であるため、読みやすいプロットを自動的に取得する自動化された方法はないと思いますが、いくつかの手動調整を行うことで、前述のツールを使用してそれを実現できます。par自動化が必須の場合、必要なデバイス幅を予測するためにRによって生成されたいくつかの要素を使用して取得できますがcin、手動で調整する方がはるかに簡単です。

新しい軸

axis関数はあなたを助けることができます。

于 2011-12-07T16:31:18.060 に答える
1

これを取得するのにしばらく時間がかかりました:

# get font factor
pdf(); ff<-72/par()$ps; dev.off();
# if there are more than 20 entries 
if (dim(x)[2] > 20) {
    # scale output by font size
    pdf(fout, height=dim(x)[2]/ff)
} else {
    pdf(fout)
}
# increase right margin width
op <- par(mar = par("mar") + c(0,0,0,2*max(nchar(colnames(x)))/ff))
# plot horizontally
plot(as.dendrogram(hclust(distance), hang=-1), main="Dissimilarity = 1 - Correlation", xlab="", horiz=T)
# restore margin
par(op)
dev.off();
于 2012-06-02T12:44:44.550 に答える