我希望在每个刻面之间添加一个厚厚的深灰色条。我不想在每个方面周围都有边框,而是在图之间有一个深灰色条。
library(ggplot2)
ggplot(mpg, aes(cty, hwy, color = factor(year))) +
geom_point() +
facet_wrap(~ cyl, nrow = 1)
Run Code Online (Sandbox Code Playgroud)
尽管我的数据与上面的示例相同,但我发现了这个问题,只有一行而不是facet_grid.
这是基于您链接的问题的未接受答案。(我认为接受的答案不是最好的。它在每个绘图面板和每个条带周围添加了一个彩色边框。)facet_wrap面板之间的列数与facet_grid面板之间的列数不同;因此对facet_wrap情节略有调整。
library(ggplot2)
library(grid)
library(gtable)
p = ggplot(mpg, aes(cty, hwy, color = factor(year))) +
geom_point() +
facet_wrap(~ cyl, nrow = 1)
gt <- ggplotGrob(p)
panels = subset(gt$layout, grepl("panel", gt$layout$name), t:r)
# The span of the vertical gap
Bmin = min(panels$t) - 1
Bmax = max(panels$t)
# The columns of the gaps (two to the right of the panels
cols = unique(panels$r)[-length(unique(panels$r))] + 2
# The grob - grey rectangle
g = rectGrob(gp = gpar(col = NA, fill = "grey40"))
## Add greyrectangles into the vertical gaps
gt <- gtable_add_grob(gt,
rep(list(g), length(cols)),
t=Bmin, l=cols, b=Bmax)
## Draw it
grid.newpage()
grid.draw(gt)
Run Code Online (Sandbox Code Playgroud)