Метки кластеров обрезаны на горизонтальной дендрограмме hclust.

Я использовал hclust и as.dendogram для создания дендрограммы, но когда я поворачиваю ее в горизонтальное положение, названия моделей обрезаются. Как я могу убедиться, что на графике отображаются все названия моделей?

моя кластерная дендограмма


person Milton Alves    schedule 19.07.2018    source источник
comment
Скорее всего, вам нужно увеличить отступ с правой стороны графика. Точные детали реализации зависят от того, как вы планируете это в первую очередь. Как правило, рекомендуется включать в свой вопрос MCVE.   -  person Artem Sokolov    schedule 19.07.2018
comment
Обращаясь за помощью, вы должны указать простой воспроизводимый пример. с образцом ввода и желаемым выводом, которые можно использовать для тестирования и проверки возможных решений.   -  person MrFlick    schedule 19.07.2018


Ответы (2)


Вам нужно играть с запасом. Вот пример (он также использует дендекстенд, чтобы дать дополнительный контроль над цветом и формой дендрограммы)

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)

введите здесь описание изображения

person Tal Galili    schedule 21.07.2018
comment
Есть ли способ в вашем пакете dendenextend изменить ось cex? Высоту ylab считаю маловатой. - person Milton Alves; 22.07.2018

Вы также можете использовать 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 показывает дополнительные параметры.

person nisetama    schedule 21.02.2021