2015-04-17 274 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

这得到一般结构正确,但只适用于每一个变量对自身的绘制。没有诉诸2个循环,有没有更聪明的方法呢?

回答

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

不错!你能解释一下对角线上是什么,这是x1-x5的简单数据分布吗? –

+0

@RuthgerRighart它是估计的密度。你可以在'ggpairs()'中用'diag = list(“continuous”=“blank”)'关闭它。 – 2015-04-17 10:59:32

+0

这很不错。谢谢。现在我只想让相关数据在上部对角线上填充更好的空间,并通过强度和方向对其进行着色。 – Deleet

2

使用PerformanceAnalytics库:

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

enter image description here

+0

这不是基于ggplot2的。 – Deleet