Удалите метки из дендограммы, созданной с помощью dendextend - PullRequest
1 голос
/ 05 августа 2020

Это похожий вопрос, но не совсем тот же, поскольку я хотел бы сделать это с помощью dendextend. Моя проблема в том, что некоторые названия моих ярлыков довольно длинные, и я хотел бы просто удалить их. Я уже пробовал несколько техник.

  1. Я попытался изменить cex = 0
  2. Я попытался изменить цвет на белый, но все это скрывает ярлыки и когда имена длинные все еще проблема.
  3. Я пробовал нанести метки = F, но это тоже не сработало. Есть ли способ полностью избавиться от этикеток? Вот пример кода.
dend <- USArrests[1:5, ] %>%
  dist() %>%
  hclust() %>%
  as.dendrogram()

dend = dend%>% set("labels_cex", 0) %>% set("labels_col", "white") # change to white however this does not work well because the color bars would just get pushed out

dend = dend%>% set("labels_cex", 0) %>% set("labels_col", "black") # setting cex to 0 does nothing


plot(dend, labels=FALSE ) # labels =F are ignore 
colored_bars(colors = cbind ( 
  state= "red" ))

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

1 Ответ

2 голосов
/ 05 августа 2020

Вы можете использовать dendrapply для изменения или удаления атрибута метки конечных узлов:

suppressPackageStartupMessages(invisible(
  lapply(c("dendextend", "dplyr"),
           require, character.only = TRUE)))  
dend <- USArrests[1:5, ] %>%
    dist() %>%
    hclust() %>%
    as.dendrogram()
  
noLabel <- function(x) {
  if (stats::is.leaf(x)) {
    attr(x, "label") <- NULL }
  return(x)
}
plot(stats::dendrapply(dend, noLabel))
colored_bars(colors = cbind (state= "red" ))

Created on 2020-08-05 by the пакет REPEX (v0.3.0)

Редактировать

В качестве альтернативы вы всегда можете обрезать имена строк и / или освободить место на графике и сдвинуть полосу вниз:

suppressPackageStartupMessages(invisible(
  lapply(c("dendextend", "dplyr", "stringr"),
           require, character.only = TRUE)))  
oldpar <- par()
par(mar=c(8,4,4,2))
dend <- data.frame(USArrests[1:5, ], 
  row.names = str_trunc(rownames(USArrests[1:5, ]), 8, ellipsis="..")) %>%
    dist() %>%
    hclust() %>%
    as.dendrogram() %>% plot()
colored_bars(colors = cbind (state= "red" ), y_shift = -60)

par(mar=oldpar$mar)

Создано 05.08.2020 пакетом REPEX (v0.3.0)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...