4

次のコードを使用して、デンドログラムを特定の高さでカットしました。問題は、デンドログラムをカットするときに、ノードにラベルを追加する方法がわからないことです。ラベル付きのデンドログラムをカットするにはどうすればよいですかRプログラムを使用していますか?

library(Heatplus)
cc=as.dendrogram(hclust(as.dist(mat),method="single"))
cutplot.dendrogram(cc,h=20)
4

3 に答える 3

6

のヘルプドキュメントをかなり掘り下げた後、非常によく似た処理を行うための例を含む関数?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)

ここに画像の説明を入力してください

于 2011-08-26T18:03:54.117 に答える
0

これは、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')

ベスト、タル

于 2013-12-09T03:45:54.673 に答える