如何只画出R中相关矩阵的一行?

mkh04yzy  于 2023-02-27  发布在  其他
关注(0)|答案(2)|浏览(180)

我有下面的数据框,我只想绘制相关矩阵的一部分。我特别想只绘制最下面一行(X6和变量X1-X5之间的相关性)。有没有方法使用相关图来完成这一点?如果没有,我如何完成这一点?我希望重要性也能显示在图上。

df <- data.frame(replicate(10,sample(0:1,1000,rep=TRUE)))
cor.plot(df[,c("X1", "X2", "X3", "X4", "X5", "X6")])

o8x7eapl

o8x7eapl1#

#calculate correlation
corx6 <- cor(x = df$X6, y =df[1:5])
corx6

# to show label (X6) in the plot
  rownames(corx6)<-'X6'

# plot correlation matrix

library(corrplot)

corrplot(corx6
         ,addgrid.col = T
         ,type = 'upper'
         ,addCoef.col = T
         ,number.cex = .7
         ,diag = T
         ,tl.cex = .9
         )

vql8enpb

vql8enpb2#

如果你想用另一种方法来给整个单元格着色(类似于psych::cor.plot(),但与corrplot::corrplot()不同),你可以创建一个image图(尽管在这里,使用fields库来添加图例,否则用image(...)替换fields::image.plot(...)):

# data 
df <- data.frame(replicate(10,sample(0:1,1000,rep=TRUE)))
cors <- cor(df[,c("X1", "X2", "X3", "X4", "X5", "X6")])

# plot
fields::image.plot(x = 1:6, y = 1, z = as.matrix(cors[,6]), 
      axes = FALSE, xlab = "", ylab = "")
text(sprintf("%.2f", cors[,6]), x = 1:6, y = 1, col = "white")
axis(1, at = 1:6, label = paste0("X", 1:6), tick = FALSE)

相关问题