Добавить метки в дендрограмму в R

Я пытаюсь применить иерархическую кластеризацию для временных рядов, чтобы определить состояния с похожим поведением во временном ряду для резидентных_процентов_изменений_из_базовых. Я получаю дендрограмму, но индекс, который я получаю по оси X, — это просто числа, и мне нужны имена штатов. мои данные выглядят так: Данные

И это часть моего кода

data <- dataset
#Convert to factor
cols <- c("country_region_code", "country_region", "sub_region_1", "iso_3166
Error in graphics:::plotHclust(n1, merge, height, order(x$order), hang, : invalid dendrogram input
code") data[cols] <- lapply(data[cols], factor) sapply(data, class) data$date <- as.Date(data$date) summary(data) #Data preparation n <- 10 s <- sample(1:100, n) i <- c(s,0+s, 279+s, 556+s, 833+s, 1110+s, 1387+s, 1664+s, 1941+s, 2218+s, 2495+s, 2772+s, 3049+s, 3326+s, 3603+s, 3880+s, 4157+s, 4434+s, 4711+s, 4988+s, 5265+s, 5542+s, 5819+s, 6096+s, 6373+s, 6650+s, 6927+s, 7204+s, 7481+s, 7758+s, 8035+s, 8312+s, 8589+s, 8866+s) d <- data[i,3:4] d$residential <- data[i,11] d[,2] =NULL str(d) pattern <- c(rep('Mexico', n), rep('Aguascalientes', n), rep('Baja California',n), rep('Baja California Sur',n), rep('Campeche',n), rep('Coahuila',n), rep('Colima',n), rep('Chiapas',n), rep('Chihuahua',n), rep('Durango',n), rep('Guanajuato',n), rep('Guerrero',n), rep('Hidalgo',n), rep('Jalisco',n), rep('México City',n), rep('Michoacan',n), rep('Morelos',n), rep('Nayarit',n), rep('Nuevo León',n), rep('Oaxaca',n), rep('Puebla',n), rep('Querétaro',n), rep('Quintana Roo',n), rep('San Luis Potosí',n), rep('Sinaloa',n), rep('Sonora',n), rep('Tabasco',n), rep('Tamaulipas',n), rep('Tlaxcala',n), rep('Veracruz',n), rep('Yucatán',n), rep('Zacatecas.',n)) d <- data.matrix(d) distance <- dist(d, method = 'euclidean') hc <- hclust(distance, method="ward.D") plot(hc, cex=.7, hang = -1, col='blue', labels=pattern)

Я получаю эту дендрограмму, когда не указываю метки дендрограмма с числовыми метками. я получаю эту ошибку

Error in graphics:::plotHclust(n1, merge, height, order(x$order), hang, : invalid dendrogram input

Я надеюсь, что кто-нибудь может мне помочь, я немного устал от этого


person Seaatm    schedule 20.04.2021    source источник
comment
Эй, пожалуйста, сделайте автономный воспроизводимый пример для вашей проблемы. Кроме того, просмотрите очень подробную виньетку dendextend, она должна соответствовать вашему варианту использования: cran.r-project.org/web/packages/dendextend/vignettes/   -  person Tal Galili    schedule 08.05.2021


Ответы (1)


Возможно, это сработает с альтернативой базовой функции графика r. Попробуйте ggdendroplot. Он должен отображать метки на оси. Для этого вам понадобится ggplot2.

devtools::install("nicolash2/ggdendroplot")
library(ggdendroplot)
library(ggplot2)

ggplot() + geom_dendro(hc)

Если вы хотите изменить его (повернуть, покрасить и т. д.), посетите страницу github: https://github.com/NicolasH2/ggdendroplot

person Solarion    schedule 20.04.2021
comment
Извините за вопрос, а какой смысл в этом пакете? Почему бы просто не использовать dendextend::as.ggdend после установки параметров объекта? - person Tal Galili; 08.05.2021
comment
Пакет просто задуман как быстрое и простое решение. Наверняка у него не так много опций, как у дендекстенда. Я думаю, вы можете использовать denextend для этой проблемы, я просто хотел предоставить один из возможных способов. Поскольку у этого поста нет другого ответа, я не понимаю, почему это больно. По той же причине я также не уверен, почему за него проголосовали, даже если это не идеальный ответ. - person Solarion; 11.05.2021