使用 {patchwork} 组装的 ggplots 之间不需要的分隔标记/线

Unwanted separation marks / lines between assembled ggplots using {patchwork}

我正在尝试将绘图与“grey20”作为绘图背景结合起来。 但是,在组合图时,似乎发生了不希望的行为,因为顶部图和底部图之间出现了较浅的分隔线。

有人知道这是否是我的错误造成的,或者是否有解决方法可以避免这种不愉快的行为?

非常感谢您的帮助!

最佳,

# plotA

plotA <- plot_spacer()+ theme(plot.background = element_rect(fill = "grey20",color = "grey20"))

  
# plotB

plotB <- plot_spacer()+ theme(plot.background = element_rect(fill = "grey20",color = "grey20"))
  
  
# plotC
  
plotC <- plot_spacer()+ theme(plot.background = element_rect(fill = "grey20",color = "grey20"))
                              
# Combining plots

(plotA / (plotB + plotC )) + plot_layout(heights = c(1,.1))

编辑 - 虽然问题似乎确实来自我的特定图形设备设置,因为在直接使用 R(而不是 RStudio)时没有发生这个问题,但这个问题无论如何都通过添加以下元素代码片段得到纠正:


((plotA / (plotB + plotC )) + plot_layout(heights = c(1,.1))) & theme(plot.background = element_rect(fill = "grey20",color = "grey20")

不是真正的答案,而是为了证明可重复性。

当给出高度参数时会发生这种情况。正如 OP 所述,它在全局传递主题时消失。

library(patchwork)
library(ggplot2)
p <-
  replicate(2, list(
    plot_spacer() + 
      theme(plot.background = element_rect(fill = "grey20",color = "grey20"))))

wrap_plots(p, nrow = 2)

wrap_plots(p, nrow = 2, heights = c(1,.1))

reprex package (v1.0.0)

于 2021-04-04 创建 会话信息
sessioninfo::session_info()
#> ─ Session info ───────────────────────────────────────────────────────────────
#>  setting  value                       
#>  version  R version 4.0.3 (2020-10-10)
#>  os       macOS Big Sur 10.16         
#>  system   x86_64, darwin17.0          
#>  ui       X11                         
#>  language (EN)                        
#>  collate  en_GB.UTF-8                 
#>  ctype    en_GB.UTF-8                 
#>  tz       Europe/London               
#>  date     2021-04-04                  
#> 
#> ─ Packages ───────────────────────────────────────────────────────────────────
#>  package     * version date       lib source        
#>  ggplot2     * 3.3.3   2020-12-30 [1] CRAN (R 4.0.2)
#>  patchwork   * 1.1.1   2020-12-17 [1] CRAN (R 4.0.2)

编辑 -

谢谢大家的解答,问题已经解决!

我从这种情况中明白了三件事:

  1. 图形设备设置会对最终结果产生影响(当我直接使用 R 而不是 RStudio 时没有出现这个问题)

  2. 高度参数似乎是造成这种情况的原因

  3. 无论哪种方式,添加以下代码都可以解决所有问题(这里,指定所有三个 patchworked 的绘图背景应该着色并填充每个单独的地块的方式):

((plotA / (plotB + plotC )) + plot_layout(heights = c(1,.1))) & theme(plot.background = element_rect(fill = "grey20",color = "grey20")

最佳,

亨利