Создайте цветовую гамму с помощью corrplot в R

Я искал в Google и Stack overflow ответ на свой вопрос в R, но не нашел подходящего. У меня есть матрица, которую я импортирую в R, а затем использую corrplot для построения. Мой вопрос в том, что у меня есть три корреляционные группы:

1: 0-<0.5

2: >0.5-0.7

3: >0.7

Мне нужен один цвет для каждой группы, поэтому красный для группы 1, синий для группы 2 и зеленый для группы 3.

Есть ли способ сделать это?

вот некоторые фиктивные данные:

library(corrplot)

data(mtcars)
M <- cor(mtcars)
set.seed(0)
corrplot(M,type='upper',method = "square",addCoef.col = "white")

Спасибо заранее!


person GIS_newbie    schedule 28.01.2021    source источник


Ответы (1)


может попробовать:

data(mtcars)
M <- abs(cor(mtcars)) # absolute values 
M[M<=0.5]=-1          # your conditions
M[M>=0.7]=1
M[M != -1 & M != 1]=0
my.col <- colorRampPalette(c("red", "blue", "green"))  # your colors 
set.seed(0)
corrplot(M,type='upper',method = "color", col = my.col(3), cl.pos = "n")

см. https://cran.r-project.org/web/packages/corrplot/vignettes/corrplot-intro.html

person Lukas Weber    schedule 28.01.2021
comment
вы хотите отображать числовые коэффициенты корреляции или этого решения достаточно? - person Lukas Weber; 29.01.2021
comment
Большое вам спасибо, это именно то, что я искал. Было бы неплохо добавить коэффициенты, а также легенду, соответствующую условиям, было бы здорово, если это возможно? Извините, что не хватило смекалки, когда дело доходит до подобных вещей. @ Лукас Вебер - person GIS_newbie; 29.01.2021
comment
Извините, а есть ли еще способ раскрасить первую диагональ белым цветом? Я попытался изменить это: df2 [df2 == 0.0] = - 0.5, а затем: df2 [df2 ‹= 0.5] = - 1, но просто снова изменил первый на все -1. - person GIS_newbie; 29.01.2021
comment
Я думал об этом, но все дополнительное было бы взломано, так как вам понадобятся две матрицы в качестве входных данных, которые, как мне кажется, не поддерживаются стандартными функциями corplot, извините! - person Lukas Weber; 04.02.2021