Milton Alves
Milton Alves

Reputation: 47

Cluster labels are cut off on horizontal hclust dendrogram

I used hclust and as.dendogram to make a dendrogram, but when I rotate it to a horizontal orientation, the model names are cut off. How can I make sure that the plot shows the entire model names?

my cluster dendogram

Upvotes: 2

Views: 2845

Answers (2)

nisetama
nisetama

Reputation: 8893

You can also use plot.phylo from package:ape (Analyses of Phylogenetics and Evolution):

library("ape")
png("out.png",w=350,h=200)
a<-as.phylo(hclust(dist(scale(head(mtcars)[,c("mpg","cyl","disp")]))))
plot(a,cex=1.3,no.margin=T,font=1)
dev.off()

font=1 uses a regular font instead of italic.

no.margin=T removes vertical margins but it still keeps horizontal margins. I used ImageMagick to remove the horizontal margins and to add a small 10px margin around the plot: mogrify -trim -border 10 -bordercolor white out.png.

cex (character expansion) changes text size.

Underscores are replaced with spaces in labels by default without underscore=T.

?plot.phylo shows further options.

Upvotes: 0

Tal Galili
Tal Galili

Reputation: 25326

You need to play with the margin. Here is an example (it also uses dendextend to give extra control over the color and shape of the dendrogram)

library(dendextend)
library(dplyr)
small_mtcars <- head(mtcars) %>% select(mpg, cyl, disp)
small_mtcars

d1 = small_mtcars %>% dist() %>% hclust(method = "average") %>% as.dendrogram() 
library(colorspace)
some_colors <- rainbow_hcl(nrow(small_mtcars))
d1_col <- some_colors[order.dendrogram(d1)]
# some colors for fun
d1 <- d1     %>% 
        set("labels_cex",1.2) %>% 
        set("labels_colors", value= d1_col) %>% 
        set("leaves_pch", 19) %>%
        set("leaves_cex", 2) %>%
        set("leaves_col", value= d1_col) 

par(mfrow = c(1,2))

par(mar = c(2,2,2,2))
d1 %>% 

    plot(main="d1 (bad margins)", horiz = TRUE)

par(mar = c(2,2,2,10))
d1 %>% 
    set("labels_cex",1.2) %>% 
    plot(main="d1 (good margins)", horiz = TRUE)

enter image description here

Upvotes: 1

Related Questions