2017-11-08 1 views
0

私はラベル付きの垂直樹形図をプロットすることができますが、水平であるときにはラベルを追加することはできません。ラベルを含む水平樹形図R

マイデータは次のようになります。

Company Industry1 Industry2 Industry3 
Google  3%  5%  6% 
Apple  2%  6%  1% 

私はデータをインポートすると、最初の列が私のラベルが含まれていますが、行はなどわずか1、2、3、だから私のコードが読み取ります。データソースは、だから私は産業 『「私はその後、別の変数に自分のデータを置く。』変数「研究所に私のラベルを割り当てるCluster_D

labs = Cluster_D[, 1] 
Industry <- Cluster_D 
rownames(Industry) <- labs$`Company` 


D.Industry <- dist(scale(round(Industry[, -1], 3)), method = "euclidean") 
H.Industry <- hclust(D.Industry, method = "ward.D") 
plot(H.Industry, labels = Cluster_D$`Company`) 

と呼ばれています。 私はデータaをプロットすると私は必要なクラスターでグラフを取得します。チャートはラベルと垂直に動作しますが、

このグラフを水平に反転させ、ラベル名を保持する方法はわかりません。私はhoriz=trueを使用することを可能にするas.dendrogram機能を使用しようとしましたが、1,2,3などに戻るので、私のラベルを保持することができません。

私は正しい自分を得る方法を誰にも説明できますか?私はStatisticaを使用するのに慣れていて、階層的なクラスタリングには何の問題もなく、私はRを手に入れようとしています。ラベルを割り当てるのは簡単にすべきだと思っています。

私は以下を使用しようとしましたが、グラフのラベルが間違っています(ABCオーダー)。

F.Industries <- as.dendrogram(H.Industry) 
labels(F.Industries) <- paste(as.character(Cluster_D[,1])) 
plot(F.Industries, horiz = TRUE) 
+0

を使用することを含みますか? 'スケール(c(3%、2%))'?数字の列を指定すると、あなたのコードが私に役立ちます。私は 'horiz = T'デンドグラムでラベルを取得します。 – missuse

+0

scale(round(Industry [、-1]、3))は、丸めとスケーリングの前に列1の文字ベクトルを削除します。実際のデータは1646970438683のように見えます。あなたはそれを動作させるために使用したコードを見ることができますか?私はF.Industries < - as.dendrogram(H。Industry)とプロット(F.Industries、horiz = TRUE)しかし、私はちょうど数値の行の名前をラベルを取得しないでください。 – PAR

答えて

0

PARによって要求されたよう: - :私がしようとすると

z <- read.table(text = "Company Industry1 Industry2 Industry3 
Google  3%  5%  6% 
Apple  2%  6%  1% 
IBM  7%  4%  2%", header = T) 

データ私は1つの以上の列IBMを追加し、あなたが提供されているサンプルデータを意味

scale(round(z[, -1], 3)) 
#output 
Error in Math.data.frame(list(Industry1 = c(2L, 1L, 3L), Industry2 = c(2L, : 
    non-numeric variable in data frame: Industry1Industry2Industry3 

ですあなた自身の代表ではありません。

数値に変換します

z = data.frame("Company" = z[,1], apply(z[,-1], 2, function(x) as.numeric(gsub("%", "", x)))) 

行名は、葉のラベル

rownames(z) <- z[,1] 

D.Industry <- dist(scale(z[, -1]), method = "euclidean") 
H.Industry <- hclust(D.Industry, method = "ward.D") 

plot(as.dendrogram(H.Industry), horiz = T) 

enter image description here

1はmar

par(mar=c(2, 0, 0, 8)) 
plot(as.dendrogram(H.Industry), horiz = T) 
で余白を調整することができますの

enter image description here

他のアプローチを使用すると、文字ベクトルをスケーリングするにはどうすればよいapeggdendro

+0

行ラベル名に列1を渡そうとすると、以下のエラーが発生します。 'row.names < - 。data.frame'のエラー(' * tmp * '、value = value): 'row.names'の長さが無効です さらに:警告メッセージ: ティブルの行名を設定することは推奨されません。 – PAR

+0

こんにちは、ありがとう、それは働いた。最終的な問題は今、私は巨大なデノグラムを持っており、ラベルは右に束ねられて断ち切られています。感謝します。デングラムを小さくしてラベルが完全に現れるようにするための提案はありますか? – PAR

+0

@PARチェック編集 – missuse

関連する問題