【问题标题】:R - Using corrplot with different variables on x and y axesR - 在 x 和 y 轴上使用具有不同变量的 corrplot
【发布时间】:2017-11-21 02:58:10
【问题描述】:

大家可能都知道,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、Y 和 Z 在 x 轴上,a、b、c 和 d 在 Y 轴上?如果是,怎么做?

PS。我要绘制的值是 beta。

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

【问题讨论】:

  • 你想绘制什么值?测试版?
  • 是的,我想绘制测试版! (这是一个标准化的测试版)

标签: r r-corrplot


【解决方案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)

【讨论】:

  • 谢谢!但是,如果 x 轴上的变量数量与 y 轴上的变量数量不同怎么办?我编辑了开头的帖子,抱歉,应该在示例中包含它。
  • 编辑答案以做出回应。
猜你喜欢
  • 1970-01-01
  • 2014-06-30
  • 2020-06-11
  • 2013-01-22
  • 1970-01-01
  • 2022-01-13
  • 1970-01-01
  • 2022-07-29
  • 1970-01-01
相关资源
最近更新 更多