如何标记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
这是最小的工作问题。考虑以下数据框
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