# How to plot a fan (Polar) Dendrogram in R?

I'm referring to something like this:

suggested dataset for showing a solutions:

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

-
What is the advantage of a polar representation (aside from saving space)? It looks to me like it is trickier to look at. –  nico Oct 29 '10 at 9:56
@nico It is more cool (-; –  mbq Oct 29 '10 at 10:08
It is also useful when you don't have one stem... –  Tal Galili Oct 29 '10 at 10:29
@mbq: you missed a "good" pun there... you could have said "it's more fan" :) –  nico Oct 30 '10 at 8:22

In phylogenetics, this is a fan phylogram, so you can convert this to phylo and use ape:

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


Result:

-
(+1) I looked for this one, but cannot found it in the ape package! –  chl Oct 29 '10 at 9:56
Bingo. That's what I was looking for. I wonder if there is something similar in ggplot2... –  Tal Galili Oct 29 '10 at 10:33
@Tal No official support for tree structures in ggplot2. Look at this Google group thread, j.mp/c85l5l (but it's definitively not circular). –  chl Oct 30 '10 at 12:52
Hello chl, thank you for the link. I'll respond there with reference to this code as well... –  Tal Galili Oct 30 '10 at 23:16

Take the example, add coord_polar() and reverse the axes and you get pretty close:

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)

-
Dear Charlotte, this is very helpful, thank you! –  Tal Galili Nov 5 '10 at 4:36
p <- ggplot(data=x) I get this error: ggplot2 doesn't know how to deal with data of class phylo. What am I missing? –  GaBorgulya Apr 14 '11 at 23:42