如何标记ggpairs中的某个点?

How to mark certain point in ggpairs?

这是最小的工作问题。考虑以下数据框

DF <- data.frame(
  y=1:10,
  x=10:1,
  z=rep(5,10),
  a=11:20
)

假设 y 是我的回应。现在,对于 ggpairs(DF) 中的每一对 plot (y,_) 我想用不同的颜色标记点 1、5 和 10。我该怎么做?

ggpairs 中似乎没有内置的方法来执行此操作。有一种方法可以绕过它,那就是修改它产生的情节。必然,这是一个“hacky”解决方案。它首先需要您指定点面板(即您希望修改的面板),当然还有您希望其点为红色的行:

point_panels <- c(5, 9, 10, 11, 13:15)
red_points <- c(1, 5, 10)

如果你做对了,下面的代码应该适当地转换你的图:

ggp <- ggpairs(DF)
ggp$data$colors <- "normal"
ggp$data$colors[red_points] <- "special"

for(i in point_panels) {
  ggp$plots[[i]]$mapping <- 
    `class<-`(c(ggp$plots[[i]]$mapping, aes(color = colors)), "uneval")
}

ggp <- ggp + scale_color_manual(values = c("black", "red"))

所以现在当我们这样做时:

ggp

我们得到

如果要添加图例,请执行

ggp$legend <- point_panels[1]
ggp