Дендрограмма в R: как правильно развесить ветки (после раскраски меток)?

Я рассмотрел другие вопросы, заданные по этой теме, и мне удалось «частично» получить то, что мне нужно. Я хочу, чтобы листья моей дендрограммы были закодированы цветом. Каждый отпуск представляет собой рынок, и у меня есть еще один столбец в моем DF, который сообщает, какой это тип рынка с помощью цветовых кодов «Красный», «Желтый» или «Зеленый» (которые были закодированы как числа: «1», «2» , "3"). Каждый рынок имеет цветовой код. Я хочу, чтобы метки были самими рынками, а цвет меток основывался на цветовых кодах.

Labels      <- DF$Markets
color_codes <- DF$Type

Data_scale  # obtained after removing the columns of 'Markets' and 'Type' 
            # from DF and scaling it.

row.names(Data_scale) <- Labels

hc   <- hclust(dist(Data_scale)))
dend <- as.dendrogram(hc)

colors_to_use <- color_codes

colors_to_use <- colors_to_use[order.dendrogram(dend)]

labels_colors(dend) <- colors_to_use
plot(dend, cex = 0.8)

Моя проблема в том, что когда я рисую это, метки кодируются, но дерево действительно вытянуто. Он такой длинный, что этикетки тоже обрезаются. Что я делаю?

Удлиненная дендрограмма


person Batool    schedule 16.05.2017    source источник


Ответы (1)


Мне нужно было «повесить» метки, а не строить их все на одной высоте. Следующее сделал трюк:

dend %>% set("leaves_pch", 19) %>% set("leaves_cex", 2) %>% 
set("leaves_col", 2) %>%      # adjust the leaves
hang.dendrogram(dend, hang_height = 0.01) %>% # hang the leaves
plot(main = "Hanging a tree")

https://cran.r-project.org/web/packages/dendextend/vignettes/introduction.html

person Batool    schedule 16.05.2017