Постройте ось Y с фактическим значением из иерархической кластеризации в R

Я пытаюсь построить дендограмму с помощью Complete Linkage Method в R.

У меня есть набор данных как:

x1,x2,x3,x4,x5
0,0.5,2.24,3.35,3
0.5,0,2.5,3.61,3.04
2.24,2.5,0,1.12,1.41
3.35,3.61,1.12,0,1.5
3,3.04,1.41,1.5,0

До сих пор я пробовал этот код ниже и получил вывод, как показано на рисунке:

dt <- read.csv("cluster.csv")
df<-scale(dt(-1))
dc<-dist(df,method = "euclidean")
hc1 <- hclust(dc, method = "complete" )
plot(hc1, labels = NULL, hang = 0.1, 
     main = "Cluster dendrogram", sub = NULL,
     xlab = NULL, ylab = "Height")

Постройте ось Y с фактическим значением из иерархической кластеризации в R

Теперь я хотел

  • постройте ось Y с фактическим значением значения, сгенерированного из расчет попарных расстояний между кластерами

  • постройте ось x с x1,x2,x3,x4,x5

Как я могу построить график, используя график, когда я изучаю R, и мне здесь препятствуют.

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

Как упоминалось в ответе, я отредактировал labels как

labels = c("x1", "x2","x3","x4","x5")

и получил вывод как:

Постройте ось Y с фактическим значением из иерархической кластеризации в R

Теперь я хотел пометить ось Y как значение, рассчитанное как высота

Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
0
0
689
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Вы можете получить доступ к значениям, как показано ниже

dt <- read.csv("cluster.csv")
df<-scale(dt[-1])  # I had to use brackets here instead of parenthesis
dc<-dist(df,method = "euclidean")
hc1 <- hclust(dc, method = "complete" )
plot(hc1, labels = NULL, hang = 0.1, 
     main = "Cluster dendrogram", sub = NULL,
     xlab = NULL, ylab = "Height")
str(hc1)

Возвращает:

List of 7
 $ merge      : int [1:4, 1:2] -1 -3 -5 1 -2 -4 2 3
 $ height     : num [1:4] 0.444 1.516 1.851 3.753
 $ order      : int [1:5] 1 2 5 3 4
 $ labels     : NULL
 $ method     : chr "complete"
 $ call       : language hclust(d = dc, method = "complete")
 $ dist.method: chr "euclidean"
 - attr(*, "class")= chr "hclust"

Как видите, нет векторов с пятью значениями, а это то, что вам нужно напрямую сопоставить с labels на вашем графике. Если вы знаете, как вычислить эти значения, просто поместите их в вектор из пяти элементов и поместите его после labels =, заменив текущий NULL.

Потрясающий! Один готов. Ось Y уже имеет высоту. Вектор height выглядит следующим образом: num [1:4] 0.444 1.516 1.851 3.753. Таким образом, он колеблется от 0 до 4. Это то, что сейчас находится на оси Y. Для большей детализации вы можете добавить abline(h = hc1$height, lty = 2, col = "lightgrey").

Pablo Bernabeu 19.07.2019 10:26

Поскольку меры высоты в дендрограмме равны num [1:4] 0.444 1.516 1.851 3.753, но почему при расчете на бумаге значения разные? У меня есть значение как: 0.5, 1.12, 1.5, 3.61

User_4373 19.07.2019 10:58

Я потерял на этом. Я перезапустил его с разными методами для расстояний (stat.ethz.ch/R-manual/R-devel/library/stats/html/dist.html) и для кластеризации (stat.ethz.ch/R-manual/R-patched/library/stats/html/hclust.h‌​tml), но все результаты были выше, чем у вас.

Pablo Bernabeu 19.07.2019 11:17

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

User_4373 19.07.2019 11:27

Здорово! Вместо этого рассмотрите возможность перекрестной проверки (больше статистики)

Pablo Bernabeu 19.07.2019 11:28

Привет! можете ли вы помочь мне обозначить точное полученное значение на линии оси Y?

User_4373 19.07.2019 12:57

Это не должно быть слишком сложно после того, как вы создали пятиэлементный вектор со значениями (остальное см. в разделе sthda.com/english/wiki/add-text-to-a-plot-in-r-software). Типа: text(x, y, your_vector, cex=0.65, pos=3, col = "grey")

Pablo Bernabeu 20.07.2019 05:58

Другие вопросы по теме