相关对图:组和密度散点图的不同点颜色

Correlation pairs plot: different point colors for groups and density scatterplot

我想通过相关性比较不同组(a 和 b)的数据,例如 a1 vs a2 和 a1 vs b2 等。 我正在使用 pairs() 函数生成相关散点图。

myData.df <- data.frame(a1=rnorm(100),a2=rnorm(100),b1=rnorm(100),b2=rnorm(100))
upper.panel<-function(x, y){
  points(x,y, pch=20,col=alpha("mediumorchid4", 0.4))
  lmod <- lm(y~x)
  modsum <- summary(lmod)
  r2 <- modsum$adj.r.squared
  r2label = bquote(italic(R)^2 == .(format(r2, digits = 2)))
  
  usr <- par("usr")
  on.exit(par(usr))
  par(usr = c(0, 1, 0, 1))
  text(0.5, 0.9, r2label)
}
pairs(myData.df, lower.panel = NULL, upper.panel = upper.panel)

我希望用不同的颜色为散点图点着色,具体取决于它们是在组内比较还是跨组比较。 ,即在组内比较 ai vs aj 时,我会用红色、bi vs bj 为蓝色、ai vs bj 为紫色等。

也可以为绘图设置不同颜色的背景。

或者,是否可以绘制成对密度散点图,例如使用 smoothScatter() 或 IDPmisc::iplot()?

谢谢

您可以使用 ggpairs 来自 GGally 的高度自定义。我敢肯定,如果您查看文档,您会发现可以根据自己的需要进行调整。在这里,我将根据您的要求使用它为点着色。

但是,对于您的特定用例,您需要将数据框的多个副本与各种 NA 列堆叠在一起,以允许添加着色变量。这只涉及一些额外的代码。

library(GGally)

myData.df <- data.frame(a1 = rnorm(100), a2 = rnorm(100), b1 = rnorm(100), b2 = rnorm(100))

plot_data <- do.call(rbind, lapply(seq(ncol(combn(ncol(myData.df), 2))),
                                   function(i) 
                                   { 
                                      myData.df[combn(4, 2)[, i]] <- NA
                                      myData.df$col <- letters[i]
                                      myData.df
                                    }))

ggpairs(plot_data, 1:4, mapping = aes(color = col)) + 
  scale_color_manual(values = c("blue", rep("purple", 4), "red")) 

reprex package (v0.3.0)

于 2020 年 7 月 10 日创建