Визуализируйте corrplot в R с более чем одной переменной / параметром

Я использую функцию corrplot, которая является частью пакета corrplot в R, чтобы визуализировать корреляции между каналами данных, которые у меня есть. Мой вопрос в том, могу ли я назначить кругу два фактора или параметра ... Так, например, могу ли я иметь размер круга, представляющий корреляцию, и цвет круга, представляющий что-то еще, например, лаги? Мои данные на самом деле являются данными взаимной корреляции, где я определил максимальную корреляцию / задержку и хочу иметь возможность визуализировать оба в виде фигуры, поэтому я хочу это сделать.

По сути, я пытаюсь достичь того же, что и в этом вопросе: R: использование corrplot для визуализации двух переменных (например, корреляции и p-значения) с использованием размера и цвета кругов, однако ни одно из решений не работает для меня и Я получаю сообщение об ошибке при установке пакетов с Github.

У меня есть векторы лагов и корреляций:

CCO_lag = (0,   NaN ,   -2 ,  NaN  ,  -5  ,  -4  ,  -6  ,  -3  ,   0 ,  NaN ,    1  ,   3  , NaN   ,  0   , -3  , NaN) 
CCO_r = c(-0.4757 ,      NaN   , 0.5679    ,   NaN   , 0.5582  ,  0.5899 ,   0.5857 ,   0.6256 ,  -0.4646   ,    NaN ,  -0.6286 , -0.4699    ,   NaN ,  -0.7710  ,  0.5869  ,     NaN `)

И скажем, я хочу визуализировать это в 1x16 квадрате, используя corrplot. Я хочу, чтобы размер кругов зависел от значения корреляции в CCO_r, а цвет кругов зависел от значения запаздывания в CCO_lag.

Кто-нибудь может помочь?

Спасибо!


person Maheen Siddiqui    schedule 07.10.2020    source источник
comment
Выложите, пожалуйста, небольшой воспроизводимый пример. И конкретизируйте свой пакет: есть ggcorrplot пакет, corrplot пакет, arm пакет имеет corrplot функцию ... что вы используете?   -  person Gregor Thomas    schedule 07.10.2020
comment
Спасибо, я постарался сделать понятнее ...   -  person Maheen Siddiqui    schedule 07.10.2020


Ответы (1)


Мне это не очень похоже на график корреляции, но мы можем сделать это:

CCO_lag = c(0,   NaN ,   -2 ,  NaN  ,  -5  ,  -4  ,  -6  ,  -3  ,   0 ,  NaN ,    1  ,   3  , NaN   ,  0   , -3  , NaN) 
CCO_r = c(-0.4757 ,      NaN   , 0.5679    ,   NaN   , 0.5582  ,  0.5899 ,   0.5857 ,   0.6256 ,  -0.4646   ,    NaN ,  -0.6286 , -0.4699    ,   NaN ,  -0.7710  ,  0.5869  ,     NaN )

d = data.frame(id = 1:length(CCO_lag), CCO_lag, CCO_r)

ggplot(d, aes(x = id, y = "A", size = CCO_r, color = CCO_lag)) +
  geom_point() +
  scale_y_discrete(breaks = NULL) +
  labs(y = "", x = "")

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

Если у вас есть матрицы:

lag_mat = matrix(CCO_lag, 4)
r_mat = matrix(CCO_r, 4)
row = c(row(lag_mat))
col = c(col(lag_mat))

dd = data.frame(
  lag = c(lag_mat), r = c(r_mat), row, col
)

ggplot(dd, aes(x = row, y = col, size = r, color = lag)) +
  geom_point() +
  theme(panel.grid = element_blank())

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

Обратите внимание, что матрицы имеют строку 1 вверху, а строки с более высокими номерами внизу, но графики имеют более низкие значения y внизу, а значения y с более высокими номерами вверху. Вы можете изменить это, или это может быть нормально. Вы можете добавить scale_y_reverse() к своему участку, чтобы переключить его.

person Gregor Thomas    schedule 07.10.2020
comment
Спасибо ... теперь моя единственная проблема заключается в том, что мои фактические матрицы CCO_r и CCO_lag имеют размер 16x16, а не 1x16 ... если я включаю в кадр данных, как в коде, он оказывается кадром данных из 256 наблюдений, которые он отображает в одном строка ... как я могу правильно прочитать эти матрицы в фреймворке данных? Спасибо! - person Maheen Siddiqui; 07.10.2020
comment
Да, я был смущен тем, что у вас было всего 16 значений, но вам нужен был квадрат 1x16 ... не совсем квадрат. Я покажу, как превратить это в квадрат 4x4, а затем вы сможете обобщить ваши большие данные. - person Gregor Thomas; 07.10.2020
comment
В общем, хорошо делать образцы данных того же типа, что и ваши реальные данные. Если ваши реальные данные представляют собой матрицу, сделайте ваши выборочные данные матрицей (меньшего размера). - person Gregor Thomas; 07.10.2020
comment
Спасибо! Что делает эта часть кода ggplot? + [! [введите здесь описание изображения] [2]] [2] theme (panel.grid = element_blank ()), потому что я получил эту ошибку: Ошибка: неожиданно '[' in: ggplot (dd, aes (x = row, y = col, size = r, color = lag)) + geom_point () + [пока я не удалил его, а затем получил цифру. Спасибо за совет! Я обязательно запомню это в следующий раз, чтобы включить меньшую матрицу реальных данных! - person Maheen Siddiqui; 07.10.2020
comment
Извините - этого больше нет. Это был Stack Overflow, пытающийся добавить изображение в середине моего кода, а не в конце (я думаю, что у меня был курсор в неправильном месте, когда я вставлял изображение - я был сбит с толку, почему он не появился в первый раз ). - person Gregor Thomas; 07.10.2020
comment
Ах! Большое спасибо за Вашу помощь! - person Maheen Siddiqui; 07.10.2020
comment
У меня есть еще один вопрос ... когда я рисую это, я получаю отрицательные лаги, например. -6, чтобы быть маленькими кругами, а затем, когда он становится положительным, круг становится больше. Я не уверен, как бы вы их поменяли? то есть большие круги для отрицательной задержки и наоборот - person Maheen Siddiqui; 08.10.2020
comment
+ scale_size_area(trans = "reverse") должен это сделать. - person Gregor Thomas; 08.10.2020