ggplot2 выводит каждый столбец фрейма данных на каждый второй столбец - PullRequest
0 голосов
/ 06 января 2020

Допустим, у меня есть следующий фрейм данных:

A       B       C       
0.451   0.333   0.034           
0.491   0.270   0.033     
0.389   0.249   0.084   
0.425   0.819   0.077  
0.457   0.429   0.053       
0.436   0.524   0.049    

Мне интересно, есть ли в ggplot2 удобная функция, которая позволяет мне отображать каждый столбец фрейма данных относительно каждого другого столбца в тот же сюжет, так что A против B, A против C, B против C. Использование аргумента par(mfrow) и графика для индивидуума кажется очень трудоемким, особенно если у вас большой фрейм данных.

В идеале результат должен выглядеть примерно так, но вместо цветов, соответствующих корреляции там должно быть только поле рассеяния.

enter image description here

Любая помощь приветствуется! Спасибо!

1 Ответ

0 голосов
/ 06 января 2020

Вы можете использовать ggpairs (как предложено @timfaber) или пары в базе R, если вы просто хотите быстро исследовать данные.

Ваши данные:

x=structure(list(A = c(0.451, 0.491, 0.389, 0.425, 0.457, 0.436
), B = c(0.333, 0.27, 0.249, 0.819, 0.429, 0.524), 
C = c(0.034, 0.033, 0.084, 0.077, 0.053, 0.049)), 
class = "data.frame", row.names = c(NA,-6L))

Для ggpairs просто выполните:

library(GGally)
ggpairs(x)

enter image description here

Для пар в базе R вы определяете функцию для верхней панели (для отображения корреляции):

panel.cor <- function(x, y, ...)
{
  par(usr = c(0, 1, 0, 1))
  txt <- as.character(round(cor(x, y), digits=2))
  text(0.5,0.5, txt)
}
pairs(x, upper.panel=panel.cor)

enter image description here

...