R에서 팬 (극) 덴드로 그램을 플로팅하는 방법?


9

나는 이와 같은 것을 언급하고있다 :

대체 텍스트

솔루션을 보여주기 위해 제안 된 데이터 세트 :

data(mtcars)
plot(hclust(dist(mtcars)))

1
공간 절약 외에 극성 표현의 장점은 무엇입니까? 보기가 까다로운 것처럼 보입니다.
nico oc

1
@nico 그것은 더 시원합니다 (-;

1
줄기가 하나도없는 경우에도 유용합니다.
Tal Galili

3
@mbq : 당신은 거기에 "좋은"말장난을 놓쳤다 ... 당신은 "더 많은 " 이라고 말할 수있었습니다 :)
nico

답변:


10

계통 발생학에서 이것은 팬 계통도이므로 이것을 다음으로 변환하여 phylo사용할 수 있습니다 ape.

library(ape)
library(cluster) 
data(mtcars)
plot(as.phylo(hclust(dist(mtcars))),type="fan")

결과:
대체 텍스트


(+1) 이걸 찾았지만 ape패키지 에서 찾을 수 없습니다 !
chl

빙고. 그것이 내가 찾던 것입니다. ggplot2에 비슷한 것이 있는지 궁금합니다 ...
Tal Galili

@Tal ggplot2에서 트리 구조를 공식적으로 지원하지 않습니다. 이 Google 그룹 스레드 인 j.mp/c85l5l을보십시오 (그러나 확실히 원형은 아닙니다).
chl

안녕하세요, 링크 주셔서 감사합니다. 이 코드와 관련하여 거기에서도 응답하겠습니다 ...
Tal Galili

5

이 게시물을 보셨습니까? http://groups.google.com/group/ggplot2/browse_thread/thread/8e1efd0e7793c1bb

예를 들어, coord_polar ()를 추가하고 축을 뒤집 으면 꽤 가까워집니다.

library(cluster) 
data(mtcars)
x <- as.phylo(hclust(dist(mtcars)))

p <- ggplot(data=x)
p <- p + geom_segment(aes(y=x,x=y,yend=xend,xend=yend), colour="blue",alpha=1) 
p <- p + geom_text(data=label.phylo(x), aes(x=y, y=x, label=label),family=3, size=3) + xlim(0, xlim) + coord_polar()

theme <- theme_update(  axis.text.x = theme_blank(),
                        axis.ticks = theme_blank(),
                        axis.title.x = theme_blank(),
                        axis.title.y = theme_blank(),
                        legend.position = "none"
                     )
p <- p + theme_set(theme)
print(p)

1
p <- ggplot(data=x)이 오류가 발생합니다 : ggplot2 doesn't know how to deal with data of class phylo. 내가 무엇을 놓치고 있습니까?
GaBorgulya

1

4 년 후, 나는 이제이 질문에 대답 할 수있게되었습니다. circlizedendextend의 두 가지 새로운 패키지를 결합하여 수행 할 수 있습니다 .

플롯은 circlize_dendrogram함수를 사용하여 만들 수 있습니다 (plot.phylo 함수의 "팬"레이아웃을 훨씬 더 세밀하게 제어 할 수 있음 ).

# install.packages("dendextend")
# install.packages("circlize")
library(dendextend)
library(circlize)

# create a dendrogram
hc <- hclust(dist(datasets::mtcars))
dend <- as.dendrogram(hc)

# modify the dendrogram to have some colors in the branches and labels
dend <- dend %>% 
   color_branches(k=4) %>% 
   color_labels

# plot the radial plot
par(mar = rep(0,4))
# circlize_dendrogram(dend, dend_track_height = 0.8) 
circlize_dendrogram(dend, labels_track_height = NA, dend_track_height = .4) 

결과는 다음과 같습니다.

여기에 이미지 설명을 입력하십시오

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.