Дендрограмма с Corrplot (R)

У кого-нибудь есть способ украсить корреляцию R corrplot? участок с дендрограммой?


person abalter    schedule 24.10.2016    source источник
comment
Мне было так грустно, что я не увидел ответов на этот вопрос   -  person Sos    schedule 21.03.2017
comment
...2 года спустя, все еще грустно :(   -  person Sos    schedule 28.03.2019
comment
@Sosi - если это поднимет вам настроение, я добавил ответ.   -  person alan ocallaghan    schedule 08.11.2019


Ответы (2)


Самое близкое известное мне решение — использовать тепловую карту на корреляционной матрице, например, вы также можете использовать gplots::heatmap.2.

Вот как это сделать с помощью пакета R Heatmaply, который также предлагает интерактивный интерфейс, в котором вы можете увеличивать масштаб и получать всплывающую подсказку при наведении курсора на ячейки:

# for the first time:
# install.packages("heatmaply")

library(heatmaply)
my_cor <- cor(mtcars)
heatmaply_cor(my_cor)

Вот как это выглядит:

введите здесь описание изображения

Вы можете узнать больше о тепловой карте в этой зарисовке.

person Tal Galili    schedule 03.06.2017

На самом деле эта функция реализована в Heatmaply примерно с декабря 2017 года! См. приведенный ниже пример, взятый из грядущей виньетки v1.0:

library("heatmaply")
r <- cor(mtcars)
## We use this function to calculate a matrix of p-values from correlation tests
## https://stackoverflow.com/a/13112337/4747043
cor.test.p <- function(x){
    FUN <- function(x, y) cor.test(x, y)[["p.value"]]
    z <- outer(
      colnames(x), 
      colnames(x), 
      Vectorize(function(i,j) FUN(x[,i], x[,j]))
    )
    dimnames(z) <- list(colnames(x), colnames(x))
    z
}
p <- cor.test.p(mtcars)
heatmaply_cor(
  r,
  node_type = "scatter",
  point_size_mat = -log10(p), 
  point_size_name = "-log10(p-value)",
  label_names = c("x", "y", "Correlation")
)

person alan ocallaghan    schedule 08.11.2019