Порядок меток в corpplot после hclust
В моем наборе данных переменные принадлежат разным группам, и я хочу назначить цвет для каждой переменной:
mycolors <- rep(NA,11)
names(mycolors) <- names(mtcars)
mycolors[1:4] <- 'green' # mpg, cyl, disp, hp
mycolors[5:9] <- 'red' # drat, wt, qsec, vs, am
mycolors[10:11] <- 'blue' # gear, carb
Теперь я хочу построить матрицу корреляции и раскрасить метки:
M <- cor(mtcars)
corrplot(M, tl.col = mycolors)
Это прекрасно работает, но если я закажу это с hclust
, этикетки идут в другом порядке, что делает цвета неправильными:
Как получить фактический заказ этикеток после hclust
, чтобы я мог переназначить цвета? Я пытался использовать следующее:
myclust <- hclust(dist(M))
myclust$labels[myclust$order]
это дает порядок, отличный от исходного, но все же не такой, как порядок, используемый в corrplot...
1 ответ
Решение
Используя идею отсюда, вы можете изменить порядок цветового вектора, чтобы он соответствовал порядку hclust
упорядоченная матрица.
ord <- corrMatOrder(M, order="hclust")
newcolours <- mycolors[ord]
newcolours
# carb wt hp cyl disp qsec vs mpg drat am
# "blue" "red" "green" "green" "green" "red" "red" "green" "red" "red"
# gear
# "blue"
corrplot(M, tl.col = newcolours, order = "hclust")