Я пытаюсь закодировать только метки листовых узлов на дендограмме. Я нашел этот пост stackoverflow, который ближе всего к тому, что я пытаюсь сделать
Этикетка и цветная дендрограмма листа
Ответ Тала Галили полезен, но что мне нужно делать, если я НЕ хочу, чтобы метки групп были прикреплены к меткам листовых узлов, а просто чтобы метки листовых узлов были окрашены в соответствии с их членством в группе?
Итак, используя код Галили,
sample = data.frame(matrix(floor(abs(rnorm(20000)*100)),ncol=200))
groupCodes <- c(rep("Cont",25), rep("Tre1",25), rep("Tre2",25),
rep("Tre3",25))
Вместо того, чтобы создавать уникальные названия на основе названия группы как такового
rownames(sample) <- make.unique(groupCodes)
Что, если бы они уже были уникальными, например
set.seed(123)
groupLabel <- rnorm(100,0,1)
rownames(sample) <- groupLabel
Как мне сохранить уникальные имена имен в качестве меток узлов и раскрасить их в соответствии с членством в группе (в данном случае это будут «коды группы» в коде Галили)?
Итак, в этом примере это будет groupCodes, где первые 25 переменных принадлежат группе Cont, следующие 25 принадлежат Tre1, и так далее. В вашем примере цветовое кодирование выполняется на основе членства в ветке, а не на основе предыдущего членства в группе. Итак, в вашем коде переменные 26,3,38,7,56 все синие, тогда как я хочу, чтобы они были окрашены в зависимости от их группы («Cont», «Tre1» и т. д.). Таким образом, 3 и 7 будут иметь свой собственный цвет (группа Cont), 26 и 38 будут иметь свой цвет (группа Tre1), а 56 также будут иметь уникальный цвет (группа Tre2). Надеюсь, это имеет смысл.
я так думал, но не понимаю, как исходный код не будет работать - раскраска не зависит от того, уникальны метки или нет
Я думаю, что исходный код зависит от меток, имеющих префикс группы (например, Cont.1, Tre1.12 и т. д.), Чтобы он работал, а уникальные метки генерируются из меток группы. Я хочу избавиться от префикса группы в своих ярлыках, но по-прежнему окрашивать их в зависимости от членства в группе. Поэтому в дендрограмме Галили я ожидал увидеть метки первого листового узла как «9», «11», «16», «15» вместо «Tre3.9», «Tre1.11» и т. д.
@Antsushi все, что вам нужно, это пропустить часть: rownames(sample) <- make.unique(groupCodes) из связанного сообщения, и я верю, что вы достигнете желаемого результата.
@missuse, я действительно нашел именно то, что мне нужно, в эта страница. Немного смущает, что я недостаточно искал, прежде чем задать этот вопрос.
@Antsushi Я рад, что ты нашел это решение. Я проголосовал за то, чтобы закрыть его для дублирования и ссылку на исходный вопрос здесь, на SO: stackoverflow.com/questions/31117849/…
Возможный дубликат Как раскрасить метки дендрограммы в соответствии с определенными группами? (в R)





какую групповую переменную вы используете для раскрашивания? как это?
labels_colors(dend) <- colorCodes[cutree(hc, k = 4)][order.dendrogram(dend)]; plot(dend)