在水平hclust树状图上切断簇标签

时间:2018-07-19 18:41:12

标签: r dendrogram hclust dendextend

我用hclustas.dendogram制作了树状图,但是当我将其旋转到水平方向时,将切断模型名称。如何确保该图显示了整个模型名称?

my cluster dendogram

2 个答案:

答案 0 :(得分:0)

您需要玩边距游戏。这是一个示例(它还使用dendextend对树状图的颜色和形状进行额外控制)

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

答案 1 :(得分:0)

您还可以使用 plot.phylo 中的 package:ape(系统发育和进化分析):

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 使用常规字体而不是斜体。

no.margin=T 删除垂直边距,但仍保留水平边距。我使用 ImageMagick 删除了水平边距并在绘图周围添加了一个 10 像素的小边距:mogrify -trim -border 10 -bordercolor white out.png

cex(字符扩展)更改文本大小。

默认情况下,标签中的下划线替换为空格,没有 underscore=T

?plot.phylo 显示更多选项。