次のコードを使用して、デンドログラムを特定の高さでカットしました。問題は、デンドログラムをカットするときに、ノードにラベルを追加する方法がわからないことです。ラベル付きのデンドログラムをカットするにはどうすればよいですかRプログラムを使用していますか?
library(Heatplus)
cc=as.dendrogram(hclust(as.dist(mat),method="single"))
cutplot.dendrogram(cc,h=20)
次のコードを使用して、デンドログラムを特定の高さでカットしました。問題は、デンドログラムをカットするときに、ノードにラベルを追加する方法がわからないことです。ラベル付きのデンドログラムをカットするにはどうすればよいですかRプログラムを使用していますか?
library(Heatplus)
cc=as.dendrogram(hclust(as.dist(mat),method="single"))
cutplot.dendrogram(cc,h=20)
のヘルプドキュメントをかなり掘り下げた後、非常によく似た処理を行うための例を含む関数?dendrogram
に出くわしました。dendrapply
これが、次の例の変更に基づくソリューションです?dendrapply
。
樹状図を作成し、高さでカットしますh=20
:
dhc <- as.dendrogram(hc <- hclust(dist(USArrests), "ave"))
chc <- cut(dhc, h=20)$upper
newLabelsと、newLab
個々のノードラベルを変更する関数を使用してベクトルを定義します。次に、これをに渡しますdendrapply
:
newLabels <- paste("Custom", 1:22, sep="_")
local({
newLab <<- function(n) {
if(is.leaf(n)) {
a <- attributes(n)
i <<- i+1
attr(n, "label") <- newLabels[i]
}
n
}
i <- 0
})
nhc <- dendrapply(chc, newLab)
labels(nhc)
[1] "Custom_1" "Custom_2" "Custom_3" "Custom_4" "Custom_5" "Custom_6"
[7] "Custom_7" "Custom_8" "Custom_9" "Custom_10" "Custom_11" "Custom_12"
[13] "Custom_13" "Custom_14" "Custom_15" "Custom_16" "Custom_17" "Custom_18"
[19] "Custom_19" "Custom_20" "Custom_21" "Custom_22"
plot(nhc)
これは、Andrie が書いたものに対する修正された解決策ですが、この種のもののために正確に構築された " dendextend "と呼ばれる新しいパッケージを使用しています。
次の URL の「使用法」セクションで、パッケージのプレゼンテーションとビネットで多くの例を見ることができます: https://github.com/talgalili/dendextend
この質問の解決策は次のとおりです。
# define dendrogram object to play with:
dhc <- as.dendrogram(hc <- hclust(dist(USArrests), "ave"))
chc <- cut(dhc, h=20)$upper
# loading the package
require(dendextend)# let's add some color:
# change labels with a simple assignment:
labels(chc) <- paste("Custom", 1:22, sep="_")
plot(chc)
パッケージをインストールするには (まだ CRAN にアップロードしていないため)、次を使用します。
####################
## installing dendextend for the first time:
if (!require('installr')) install.packages('installr'); require('installr')
## install.Rtools() # run this if you are using Windows and don't have Rtools
require2(devtools)
install_github('dendextend', 'talgalili')
require2(Rcpp)
install_github('dendextendRcpp', 'talgalili')
ベスト、タル