R - 在x和y轴上使用具有不同变量的corrplot

时间:2017-11-21 02:58:10

标签: r r-corrplot

大家都知道,corrplot可用于创建漂亮的图形,可以显示一组变量之间关系的强度,x轴上的变量与y轴上的变量相同(通常是对称的,除非你在上对角线上有一个不同于下对角线的度量标准。我想以稍微不同的方式使用corrplot。

假设我有一个如下所示的数据框:

var1 var2 beta  se   pvalue
X    a    .01   .01  .35
X    b    -.02  .02  .45
X    c    .04   .01  .55
X    d    .04   .01  .55
Y    a    .06   .01  .01
Y    b    -.02  .02  .25
Y    c    .04   .01  .55
Y    d    .02   .01  .55
Z    a    .04   .01  .01
Z    b    -.01  .01  .45
Z    c    .03   .02  .02
Z    d    .04   .02  .02

我可以使用corrplot在x轴上创建带有变量X,Y和Z的图形,在Y轴上创建a,b,c和d吗?如果是,怎么样?

PS。我要绘制的值是beta。

编辑:我编辑的示例文件相对于x和y上的变量nr是非对称的

1 个答案:

答案 0 :(得分:1)

您可以将数据重新整形为方形矩阵,然后将其输入corrplot。 即使结果矩阵不是正方形,这也可以工作。

## Your new data
Dat = read.table(text="var1 var2 beta  se   pvalue
X    a    .01   .01  .35
X    b    -.02  .02  .45
X    c    .04   .01  .55
X    d    .04   .01  .55
Y    a    .06   .01  .01
Y    b    -.02  .02  .25
Y    c    .04   .01  .55
Y    d    .02   .01  .55
Z    a    .04   .01  .01
Z    b    -.01  .01  .45
Z    c    .03   .02  .02
Z    d    .04   .02  .02",
header=TRUE)

## Now reshape the data  (same as before)
wide = reshape(Dat[,1:3], idvar = c("var1"),
    timevar="var2", direction = "wide")
rownames(wide) = wide$var1
wide = wide[,-1]
colnames(wide) = sub("beta.", "", colnames(wide))

## Pass it to corrplot
library(corrplot)
corrplot(as.matrix(wide), is.corr=FALSE, tl.srt=0)

Corrplot