使用 ggplot2 绘制相关矩阵图
Correlation matrix plot with ggplot2
我想创建一个相关矩阵图,即每个变量都绘制在散点图中与其他变量的关系图,如 pairs()
或 splom()
。我想用 ggplot2 来做这个。 See here for examples。 link 提到有人为在 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)
这使一般结构正确,但仅适用于绘制每个变量与自身的关系。有没有更聪明的方法可以不求助于 2 个循环?
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)
# blank
ggpairs(d, diag = list("continuous"="blank")
使用 PerformanceAnalytics 库:
library("PerformanceAnalytics")
chart.Correlation(df, histogram = T, pch= 19)
我想创建一个相关矩阵图,即每个变量都绘制在散点图中与其他变量的关系图,如 pairs()
或 splom()
。我想用 ggplot2 来做这个。 See here for examples。 link 提到有人为在 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)
这使一般结构正确,但仅适用于绘制每个变量与自身的关系。有没有更聪明的方法可以不求助于 2 个循环?
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)
# blank
ggpairs(d, diag = list("continuous"="blank")
使用 PerformanceAnalytics 库:
library("PerformanceAnalytics")
chart.Correlation(df, histogram = T, pch= 19)