デンドログラムを特定のレベルの類似性で切り取って生成されたクラスターを、順序付け結果 (NMDS) にオーバーレイする必要があります。私は、この問題に対する明らかな解決策を見つけることなく、ade4 とビーガンを調べてきました。
現在、Primer-e を使用しています (下のスクリーン ショットを参照) が、グラフィックが少し制限されていることがわかりました。正しい方向のポイントは大歓迎です。
デンドログラムを特定のレベルの類似性で切り取って生成されたクラスターを、順序付け結果 (NMDS) にオーバーレイする必要があります。私は、この問題に対する明らかな解決策を見つけることなく、ade4 とビーガンを調べてきました。
現在、Primer-e を使用しています (下のスクリーン ショットを参照) が、グラフィックが少し制限されていることがわかりました。正しい方向のポイントは大歓迎です。
これはビーガンでは非常に簡単です。これについてはブログ投稿で詳しく説明していますが、クラスタリングについては少し説明していません.
これは簡単な例です。使用しているパッケージ/コードにこれを変換できると仮定します。
パッケージとデータセットをロードする
require(vegan)
data(dune)
非類似度行列を計算してクラスター化し、樹状図を切り取って 3 つのグループを与える
dij <- vegdist(dune) ## bray curtis dissimilarity
clu <- hclust(dij, method = "average")
grp <- cutree(clu, 3)
見るgrp
R> grp
2 13 4 16 6 1 8 5 17 15 10 11 9 18 3 20 14 19 12 7
1 1 1 2 1 1 1 1 3 2 1 1 1 1 1 2 2 3 1 1
これにより、データ セット内の各サンプル (一番上の行) に対してクラスター メンバーシップ (2 行目) が使用されることに注意してください。
次に NMDS を適合させます
set.seed(2) ## setting a seed to make this reproducible
ord <- metaMDS(dune)
この例では、クラスターのメンバーシップに従ってポイントに色を付けるので、クラスターごとに 1 つの色のベクトルを定義する必要があります。
col <- c("red2", "green4", "mediumblue")
と を使用grp
しcol
て、プロットする各ポイント (サンプル) の色名のベクトルを作成col
できるようになりましたgrp
。例えば:
R> col[grp]
[1] "red2" "red2" "red2" "green4" "red2"
[6] "red2" "red2" "red2" "mediumblue" "green4"
[11] "red2" "red2" "red2" "red2" "red2"
[16] "green4" "green4" "mediumblue" "red2" "red2"
あとは、NMDS 順序をプロットし、ポイントと凡例を追加するだけです。plot()
次の行にポイントを追加することをより制御できるように、呼び出しでプロットを抑制します。3 行目は凡例を追加するだけです。
plot(ord, type = "n", display = "sites")
points(ord, col = col[grp], bg = col[grp], pch = 21)
legend("topright", legend = paste("Cluster", 1:3),
col = col, pt.bg = col, bty = "n", pch = 21)
結果の図は次のようになります。
更新:ポイントの各クラスターの凸包を順序図に追加するには、ordihull()
関数を利用できます。上記の例を続けて、次のように凸包を追加します。
ordihull(ord, groups = grp, display = "sites")
その時点で、図は次のようになります
注: veganの上位レベルのplot()
メソッドは、序列の迅速かつ汚い表示を意図的に提供するように設計されているため、色のベクトルや文字のプロットを受け入れません。代わりに、ここで使用するようなプロット フローの低レベル メソッドを構築することを期待していますpoints()
。