Хорошо, я прошу прощения за ответ на свой вопрос, но я только что нашел решение.
Этого можно добиться, используя &
, который применяет функцию ко всем графикам в лоскутный объект.
1) представ:
library(patchwork)
library(ggplot2)
library(dplyr)
#>
#> Attaching package: 'dplyr'
#> The following objects are masked from 'package:stats':
#>
#> filter, lag
#> The following objects are masked from 'package:base':
#>
#> intersect, setdiff, setequal, union
p1 <- mtcars %>%
ggplot() +
geom_point(aes(mpg, disp)) +
ggtitle('Plot 1')
p2 <- mtcars %>%
filter(disp < 300) %>%
ggplot() +
geom_point(aes(mpg, disp)) +
ggtitle('Plot 2')
p_combined <- p1 + p2
p_combined
Создано в 2020-02-01 пользователем представьте пакет (v0.3.0)
2) Получите минимальное и максимальное значения из диапазонов:
p_ranges_x <- c(ggplot_build(p_combined[[1]])$layout$panel_scales_x[[1]]$range$range,
ggplot_build(p_combined[[2]])$layout$panel_scales_x[[1]]$range$range)
p_ranges_y <- c(ggplot_build(p_combined[[1]])$layout$panel_scales_y[[1]]$range$range,
ggplot_build(p_combined[[2]])$layout$panel_scales_y[[1]]$range$range)
3) Примените эти диапазоны к объекту пэчворка:
p_combined &
xlim(min(p_ranges_x), max(p_ranges_x)) &
ylim(min(p_ranges_y), max(p_ranges_y))
Создано в 2020-02-01 пакетом Представ. (v0.3.0)