ファン(極)デンドログラムをRでプロットする方法は?


9

私はこのようなものを指している:

代替テキスト

ソリューションを示すための推奨データセット:

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

1
(スペースの節約を除いて)極座標表現の利点は何ですか?見るのが難しいように見えます。
nico

1
@nicoよりクールです(-;

1
ステムが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を見てください(ただし、完全に循環的ではありません)。
12:52

こんにちは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 2011

1

4年後、私は今この質問に答えることができます。これは、2つの新しいパッケージ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.