Порядок меток в 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")
Другие вопросы по тегам