使用 {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)
编辑 -
谢谢大家的解答,问题已经解决!
我从这种情况中明白了三件事:
图形设备设置会对最终结果产生影响(当我直接使用 R 而不是 RStudio 时没有出现这个问题)
高度参数似乎是造成这种情况的原因
无论哪种方式,添加以下代码都可以解决所有问题(这里,指定所有三个 patchworked 的绘图背景应该着色并填充每个单独的地块的方式):
((plotA / (plotB + plotC )) + plot_layout(heights = c(1,.1))) & theme(plot.background = element_rect(fill = "grey20",color = "grey20")
最佳,
亨利
我正在尝试将绘图与“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)
编辑 -
谢谢大家的解答,问题已经解决!
我从这种情况中明白了三件事:
图形设备设置会对最终结果产生影响(当我直接使用 R 而不是 RStudio 时没有出现这个问题)
高度参数似乎是造成这种情况的原因
无论哪种方式,添加以下代码都可以解决所有问题(这里,指定所有三个 patchworked 的绘图背景应该着色并填充每个单独的地块的方式):
((plotA / (plotB + plotC )) + plot_layout(heights = c(1,.1))) & theme(plot.background = element_rect(fill = "grey20",color = "grey20")
最佳,
亨利