对于其他想要更改单独面板标签的人,有一个解决方案在这里:
g <- ggplot_gtable(ggplot_build(p))
stripr <- which(grepl('strip-r', g$layout$name))
fills <- c("red","green","blue","yellow")
k <- 1
for (i in stripr) {
j <- which(grepl('rect', g$grobs[[i]]$grobs[[1]]$childrenOrder))
g$grobs[[i]]$grobs[[1]]$children[[j]]$gp$fill <- fills[k]
k <- k+1
}
grid::grid.draw(g)
striprt <- which( grepl('strip-r', g$layout$name) | grepl('strip-t', g$layout$name) )
和 fills <- c("red","green","blue","yellow", "red","green","blue")
(还将第5行中的 stripr
更改为 striprt
)。striprt
匹配到的面板数量超过了实际数量。您可以在for循环中添加一行来跳过不是面板的情况:if(length(j)== 0)next
- TKraft