如何在R中读取相关矩阵并形成散点图矩阵

如何在R中读取相关矩阵并形成散点图矩阵,r,matrix,r-corrplot,R,Matrix,R Corrplot,我在excel中有一个相关矩阵,如下所示: dfA <- read.table(text= "beta1 beta2 beta3 beta4 beta5 beta6 X X2 X3 beta1 1.0000 -0.2515 -0.2157 0.7209 -0.7205 0.4679 0.1025 -0.3606 -0.0356 beta2 -0.2515 1.0000 0.9831 0.1629 -0.1654

我在excel中有一个相关矩阵,如下所示:

dfA <- read.table(text=
      "beta1   beta2   beta3   beta4   beta5   beta6       X      X2      X3
beta1  1.0000 -0.2515 -0.2157  0.7209 -0.7205  0.4679  0.1025 -0.3606 -0.0356
beta2 -0.2515  1.0000  0.9831  0.1629 -0.1654 -0.5595 -0.0316  0.0946  0.0829
beta3 -0.2157  0.9831  1.0000  0.1529 -0.1559 -0.4976 -0.0266  0.0383  0.0738
beta4  0.7209  0.1629  0.1529  1.0000 -1.0000 -0.2753  0.0837 -0.1445  0.0080
beta5  0.4679 -0.5595 -0.4976 -0.2753  1.0000  0.2757  0.0354 -0.3149 -0.0596
beta6 -0.7205 -0.1654 -0.1559 -1.0000  0.2757  1.0000 -0.0837  0.1451 -0.0081
X      0.1025 -0.0316 -0.0266  0.0837 -0.0837  0.0354  1.0000  0.0278 -0.0875
X2    -0.3606  0.0946  0.0383 -0.1445  0.1451 -0.3149  0.0278  1.0000  0.2047
X3    -0.0356  0.0829  0.0738  0.0080 -0.0081 -0.0596 -0.0875  0.2047  1.0000", 
      header=TRUE) 
我收到错误消息

Error in corrplot(B, method = "circle") : The matrix is not in [-1, 1]!
请帮我解决这个问题。

corrplot()解决方案 根据上面用户20650的评论,使用ggplot更新我的第一篇文章。user20650表明,可能的错误源是四舍五入错误,导致一些数字超出允许的[-1,1]范围,四舍五入解决了这个问题。我还可以使用corrplot()生成绘图

此时,运行corrplot()将生成以下绘图:

corMat<-as.matrix(dfA)

library('corrplot')
corrplot(corMat, method='circle')
3) 最后,我将这些数据输入ggplot2,主要依靠geom_tile()打印矩阵,geom_text()打印每个tile上的标签。如果你想的话,你可以把它打扮得更漂亮些

library(ggplot2)
ggplot(m, aes(Var2, Var1, fill = value, label=value_lab),color='blue') + 
  geom_tile() + 
  geom_text() +
  xlab('')+
  ylab('')+
  theme_minimal()

我可能误解了,但我认为您正在创建一个由Excel制作的相关矩阵图的相关矩阵,该图不会飞起来。您只能使用“整洁”数据来执行相关矩阵。在这种情况下,Tidy意味着您需要独特的观察结果,如行和beta1、beta2、beta3等。。。这是你的专栏。希望这能有所帮助。@BGA实际上我在excel中有一个相关矩阵,所以,我正试图用这个相关矩阵制作一个散点图矩阵图。啊。但概念是一样的。我相信您仍然需要原始数据来执行散点图矩阵。你不再有原始数据了吗?如果可以访问,则很容易将其作为csv或excel中的数据框带入r。@BGA我没有原始数据。所以,做散点图是没有希望的?你现在只是从十进制数字中创建圆,这不再是散点图了。@user20650哦,太酷了。我在看到你对这个问题的评论之前提交了我的答案。我将更新我的帖子以包含corrplot()。还有,为什么我需要byrow论证?matrix()似乎已经将值正确地放入了corMat。好眼力。我将使用OP的新read.table()import进行更新。它工作得非常好(我制作了两个散点图矩阵),感谢您的回答和这样的逐步代码解释。实际上,ggplot比基于圆的散点图看起来要好得多。我对我提供数据的方式表示歉意。您能帮助我如何将相关矩阵导入矩阵格式的R中吗?
corMat<-as.matrix(dfA)

library('corrplot')
corrplot(corMat, method='circle')
corMat[lower.tri(corMat)]<-NA

> print(corMat)
      beta1   beta2   beta3  beta4   beta5   beta6       X      X2      X3
beta1     1 -0.2515 -0.2157 0.7209  0.4679 -0.7205  0.1025 -0.3606 -0.0356
beta2    NA  1.0000  0.9831 0.1629 -0.5595 -0.1654 -0.0316  0.0946  0.0829
beta3    NA      NA  1.0000 0.1529 -0.4976 -0.1559 -0.0266  0.0383  0.0738
beta4    NA      NA      NA 1.0000 -0.2753 -1.0000  0.0837 -0.1445  0.0080
beta5    NA      NA      NA     NA  1.0000  0.2757 -0.0837  0.1451 -0.0081
beta6    NA      NA      NA     NA      NA  1.0000  0.0354 -0.3149 -0.0596
X        NA      NA      NA     NA      NA      NA  1.0000  0.0278 -0.0875
X2       NA      NA      NA     NA      NA      NA      NA  1.0000  0.2047
X3       NA      NA      NA     NA      NA      NA      NA      NA  1.0000
library(reshape2)
m<-melt(corMat)
m<-data.frame(m[!is.na(m[,3]),]) # get rid of the NA matrix entries
m$value_lab<-sprintf('%.2f',m$value)
> head(m)
    Var1  Var2   value value_lab
1  beta1 beta1  1.0000      1.00
10 beta1 beta2 -0.2515     -0.25
11 beta2 beta2  1.0000      1.00
19 beta1 beta3 -0.2157     -0.22
20 beta2 beta3  0.9831      0.98
21 beta3 beta3  1.0000      1.00
library(ggplot2)
ggplot(m, aes(Var2, Var1, fill = value, label=value_lab),color='blue') + 
  geom_tile() + 
  geom_text() +
  xlab('')+
  ylab('')+
  theme_minimal()