【问题标题】:Cluster labels are cut off on horizontal hclust dendrogram集群标签在水平 hclust dendrogram 上被切断
【发布时间】:2018-12-28 00:18:16
【问题描述】:

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

【问题讨论】:

  • 您可能需要增加绘图右侧的边距。确切的实现细节首先取决于您如何绘制它。一般来说,建议在您的问题中包含MCVE
  • 寻求帮助时,您应该包含一个简单的reproducible example,其中包含可用于测试和验证可能解决方案的示例输入和所需输出。

标签: r dendrogram hclust dendextend


【解决方案1】:

你需要利用边距。这是一个示例(它还使用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)

【讨论】:

  • 你的包装dendenextend有没有办法改变轴cex?我认为“高度”ylab 很小。
【解决方案2】:

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

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 显示更多选项。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-11-07
    • 1970-01-01
    • 1970-01-01
    • 2012-12-05
    • 1970-01-01
    • 2017-02-19
    相关资源
    最近更新 更多