2017-11-08 16 views
0

입니다. 레이블이있는 세로 형 덤 드로를 플로팅 할 수 있지만 가로형 일 때 레이블을 추가 할 수없는 문제가 있습니다.레이블이있는 가로형 ンド 드로 그램이

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

내가 데이터를 가져, 최초의 열은 내 레이블을 포함하지만 행이 단지 1, 2, 3

그래서 내 코드 읽기 등이 있습니다

내 데이터는 다음과 같습니다 : 데이터 소스는 "산업". 그때 다른 변수에 내 데이터를 배치 "

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`) 

그래서 내가 랩의 변수에 내 레이블을 지정 Cluster_D

이라고합니다. 내가 데이터 A를 플롯하면 레이블에 전달해야하는 클러스터가있는 차트가 표시됩니다. 차트가 라벨과 함께 수직으로 작동하지만 .....

이 차트를 수평으로 뒤집어서 라벨 이름을 유지하는 방법을 알지 못합니다. 나는 horiz=true을 사용하는 것을 허용하는 as.dendrogram 기능을 사용하는 것을 시도했다 그러나 1, 2, 3 등등 등을 맞댄 되돌릴 때, 나의 상표를 지키지 않는다.

누군가는 나가 나 자신을 어떻게 정확한 얻을 수 있는지 설명 할 수 있는가? Statistica를 사용하는 데 익숙해졌으며 계층 적 클러스터링을 수행하는 데 문제가 없었습니다. R을 선택하려고합니다. 레이블을 지정하기가 쉽지는 않지만 단지 방법을 모르겠습니다.

나는 아래를 사용하여 시도했지만 차트의 라벨이 잘못 지정되었습니다 (ABC 주문).

PAR의 요청에 따라
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 dendogram에서 라벨을 얻습니다. – missuse

+0

scale (round (Industry [, -1], 3))은 반올림 및 크기 조절 전에 1 열의 문자 벡터를 제거합니다. 실제 데이터는 .1646970438683처럼 보일 수 있습니다. 작동하도록 사용했던 코드를 볼 수 있습니까? 나는 F.Industries <- as.dendrogram (H.산업) 및 음모 (F.Industries, horiz = TRUE)하지만 난 그냥 숫자 행 이름 레이블을 안. – PAR

답변

0

: - :

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

내가하려고하면 :

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 

이 제공되는 샘플 데이터가 의미

데이터를 내가 한 번 더 열 IBM 추가 자신의 대표가 아닙니다. 숫자에

변환 :

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

하나 레이블로 여백을 조정할 수 있습니다 mar

par(mar=c(2, 0, 0, 8)) 
plot(as.dendrogram(H.Industry), horiz = T) 

enter image description here

다른 방법은 ape하고 문자 벡터의 크기를 조절하려면 어떻게 ggdendro

+0

행 레이블 이름에 열 1을 전달하려고하면 아래 오류가 발생합니다. 'row.names <-. data.frame'의 오류 ('* tmp *', value = value) : 'row.names'길이가 올바르지 않습니다. 경고 메시지 : 바둑판에 행 이름을 설정하는 것이 더 이상 사용되지 않습니다. – PAR

+0

안녕하세요, 정말 고마워요. 마지막 문제는 이제 거대한 음조를 가지고 라벨이 오른쪽으로 모여 잘 렸습니다. 고맙습니다. 레이블이 완전히 나타날 수 있도록 구획을 작게 만드는 것에 대한 제안? – PAR

+0

@PAR 확인 수정 – missuse