这是最小的工作问题。考虑以下数据框
DF <- data.frame(
y=1:10,
x=10:1,
z=rep(5,10),
a=11:20
)
假设y
是我的回应。现在,对于中的每一对图(y,_)
,ggpairs(DF)
我想用不同的颜色标记点 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