我用hclust
和as.dendogram
制作了树状图,但是当我将其旋转到水平方向时,将切断模型名称。如何确保该图显示了整个模型名称?
答案 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)
答案 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
显示更多选项。