2015-11-09 11 views
5

私はRで樹形図を持っています。これはhclustを使った階層的クラスタリングに基づいています。私は異なる色で異なるラベルに色付けしていますが、dendrogram = dendrogram %>% set("labels", dataframe$column)を使用して私の専用プログラムのラベルを(データフレームの行に)変更しようとすると、ラベルは置き換えられますが、間違った位置にあります。例として:rで樹状図ラベルを変更するには

私の樹形図はこのようになります

:上記で指定し、ラベルが変更されますが、それらはデータフレーム内の順序で左から右に適用されているように私は今、ラベルを変更しようとすると、

___|___ 
|  _|_ 
|  | | 
|  1 0 
2 

___|___ 
    |  _|_ 
    |  | | 
    |  B A 
    C 

しかし、私は実際に取得することです:私たちは私の元のデータフレームは、この

df: 
    Column1 Column2 
0  1  A 
1  2  B 
2  3  C 

ように見えると仮定した場合、私がしたいことは、これはある

___|___ 
    |  _|_ 
    |  | | 
    |  B C 
    A 

データのクラスタリングそれらの樹状図への変換は以下のようにして行った:

> d <- stringdistmatrix(df$Column1, df$Column1) 
> cl <- hclust(as.dist(d)) 
> dend = as.dendrogram(cl) 

インデックスに基づいて別の列の値を使って樹形図にどのようにラベルを付けることができますか?あなたが作成したhclustオブジェクト、cl

答えて

3

、あなたは要素が系統樹にされる順序が含まれている「注文」という名前の要素を持っています。

あなたはラベルを変更したい場合は、「新しい」デンドログラムは右であるので、あなたは、同じ順序(cl$order)に新しいラベルを配置する必要があります。

df$column2[cl$order] 
+0

動作するようです。私はプロット(使用)したときに、私のラベルのいくつかが樹状図から切り離されているようにはっきり言ってはいけません。私はそれを訂正するために何ができるだろうか?あなたの答えをありがとう:-) –

+1

@sequence_hard 'cex'を減らすか、余白を広げようとすることができます(または両方のビット;-)) – Cath

+1

downvote?何故なの。しかし、なぜ "なぜ"私に​​興味があるだろう... – Cath

4

The dendextend packageは、あなたが直接、樹状図を更新することができます(hclustと同様に)を使用して、以下を使用します。

x <- c(1:5) 
dend <- as.dendrogram(hclust(dist(x))) 

if(!require(dendextend)) install.packages("dendextend") 
library("dendextend") 

labels(dend) 
labels(dend) <- c(21:25) 
labels(dend) 
関連する問題