Я хочу создать график матрицы корреляции, то есть график, в котором каждая переменная отображается на диаграмме рассеяния относительно каждой другой переменной, например 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)
Это получает общую структуру права, но работает только для построения каждой переменной против самого себя. Есть ли еще более умный способ сделать это, не прибегая к двум петлям?
Nice! Не могли бы вы объяснить, что находится на диагонали, это простое распределение данных x1-x5? –
@ RuthgerRighart Это расчетная плотность. Вы можете отключить его с помощью 'diag = list (" continu "=" blank ")' в 'ggpairs()'. –
Это очень хорошо. Благодарю. Теперь я хочу просто сделать данные cor заполнить пространство лучше в верхней диагонали и покрасить его силой и направлением. – Deleet