2015-04-17 5 views
3

Я хочу создать график матрицы корреляции, то есть график, в котором каждая переменная отображается на диаграмме рассеяния относительно каждой другой переменной, например pairs() или splom(). Я хочу сделать это с помощью ggplot2. See here for examples. В ссылке упоминается код, который кто-то написал для этого в ggplot2, однако он устарел и больше не работает (даже после того, как вы заменили устаревшие части).График корреляционной матрицы с ggplot2

Можно сделать это с помощью петли в петле, а затем multiplot(), но должен быть лучший способ. Я попытался долго плавить набор данных и копировать значения и переменные переменные, а затем использовать грани. Это почти дает вам что-то правильное.

d = data.frame(x1=rnorm(100), 
       x2=rnorm(100), 
       x3=rnorm(100), 
       x4=rnorm(100), 
       x5=rnorm(100)) 
library(reshape2) 
d = melt(d) 
d$value2 = d$value 
d$variable2 = d$variable 

library(ggplot2) 
ggplot(data=d, aes(x=value, y=value2)) + 
    geom_point() + 
    facet_grid(variable ~ variable2) 

enter image description here

Это получает общую структуру права, но работает только для построения каждой переменной против самого себя. Есть ли еще более умный способ сделать это, не прибегая к двум петлям?

ответ

11
library(GGally) 

set.seed(42) 
d = data.frame(x1=rnorm(100), 
       x2=rnorm(100), 
       x3=rnorm(100), 
       x4=rnorm(100), 
       x5=rnorm(100)) 

# estimated density in diagonal 
ggpairs(d) 

enter image description here

# blank 
ggpairs(d, diag = list("continuous"="blank") 

enter image description here

+0

Nice! Не могли бы вы объяснить, что находится на диагонали, это простое распределение данных x1-x5? –

+0

@ RuthgerRighart Это расчетная плотность. Вы можете отключить его с помощью 'diag = list (" continu "=" blank ")' в 'ggpairs()'. –

+0

Это очень хорошо. Благодарю. Теперь я хочу просто сделать данные cor заполнить пространство лучше в верхней диагонали и покрасить его силой и направлением. – Deleet

2

Использование PerformanceAnalytics библиотека:

library("PerformanceAnalytics") 
chart.Correlation(df, histogram = T, pch= 19) 

enter image description here

+0

Это не ggplot2. – Deleet

Смежные вопросы