R - corrplot - 寻找一种在视觉上区分列组的方法

时间:2017-11-25 01:00:11

标签: r r-corrplot

以下代码:

Dat = read.table(text="varA1 varA2 varA3  varB1  varB2 varC1 varC2 varC3
             .01   .01  .35    .05    .06   .01   .01  .25
             .02   .21  .31    .34    .06  .04   .01  .35
             .01   .03  .35    .05    .03  .05   .31  .33
             .45   .01  .32    .08    .26  .11   .04  .35
             .01   .01  .35    .05    .03  .01   .33  .25",
             header=TRUE)

library(corrplot)
corrplot(as.matrix(Dat), is.corr=FALSE, tl.srt=45)

创建此图:

enter image description here

是否可以更新代码以突出显示我有三组变量的事实,即

  • varA1,varA2,varA3
  • varB1,varB2
  • varC1,varC2,varC3

所以要么在所有三个周围放一个矩形(类似于corrplot中的选项hclust,遗憾的是不允许自定义矩形),就像我在这里使用paint做的那样:

enter image description here

或者也许通过以三种不同的颜色打印标题,或者我可以在视觉上区分三组变量的任何其他方式?欢迎任何提示,非常感谢!

1 个答案:

答案 0 :(得分:1)

您可以使用segments在边框中绘图。

segments(c(0.5,3.5,5.5,8.5), rep(0.5,4), 
    c(0.5,3.5,5.5,8.5), rep(5.5,4), lwd=3)
segments(c(0.5, 0.5), c(0.5, 5.5), c(8.5, 8.5), c(0.5,5.5), lwd=3)

Corrplot with borders

您可以使用不同颜色勾画并填充背景

ColorScheme = c("#FFEEEE", "#EEFFEE", "#EEEEFF")
Groups = c(rep(1,15), rep(2,10), rep(3, 15))
corrplot(as.matrix(Dat), is.corr=FALSE, tl.srt=45, bg=ColorScheme[Groups])

segments(c(0.5,3.5,5.5,8.5), rep(0.5,4), 
    c(0.5,3.5,5.5,8.5), rep(5.5,4), lwd=3)
segments(c(0.5, 0.5), c(0.5, 5.5), c(8.5, 8.5), c(0.5,5.5), lwd=3)

Colored corrplot