Take the 2-minute tour ×
Cross Validated is a question and answer site for people interested in statistics, machine learning, data analysis, data mining, and data visualization. It's 100% free, no registration required.

I'm referring to something like this:

alt text

suggested dataset for showing a solutions:

data(mtcars)
plot(hclust(dist(mtcars)))
share|improve this question
1  
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
1  
@nico It is more cool (-; –  mbq Oct 29 '10 at 10:08
1  
It is also useful when you don't have one stem... –  Tal Galili Oct 29 '10 at 10:29
3  
@mbq: you missed a "good" pun there... you could have said "it's more fan" :) –  nico Oct 30 '10 at 8:22
add comment

2 Answers

up vote 10 down vote accepted

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:
alt text

share|improve this answer
    
(+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
add comment

Did you see this post? http://groups.google.com/group/ggplot2/browse_thread/thread/8e1efd0e7793c1bb

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)
share|improve this answer
    
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
add comment

Your Answer

 
discard

By posting your answer, you agree to the privacy policy and terms of service.

Not the answer you're looking for? Browse other questions tagged or ask your own question.