与ggplot2的相关矩阵图

时间:2015-04-17 10:42:27

标签: r ggplot2 correlation

我想创建一个相关矩阵图,即一个图,其中每个变量都在散点图中与其他变量相对照,如pairs()splom()。我想用ggplot2做这个。 See here for examples。该链接提到了某人在ggplot2中为此执行此操作所编写的代码,但是,它已过时且不再有效(即使在您更换了已弃用的部分之后)。

可以通过循环中的循环然后multiplot()执行此操作,但必须有更好的方法。我尝试将数据集熔化为long,然后复制值和变量,然后使用facet。这几乎给你一些正确的东西。

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

这使得一般结构正确,但仅适用于绘制每个变量对自己。是否有一些更聪明的方法来做到这一点,而不诉诸2循环?

2 个答案:

答案 0 :(得分:16)

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

答案 1 :(得分:1)

使用PerformanceAnalytics库:

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

enter image description here