0

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

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

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

4

1 回答 1

1

似乎没有内置的方法可以做到这一点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

在此处输入图像描述

于 2020-12-01T15:02:00.790 回答