【发布时间】:2020-05-17 20:39:57
【问题描述】:
当使用 patchwork 组合 ggplot2 对象时,我希望能够有一个选项,我可以轻松地为所有图设置一个选项,使其具有相同的 x 轴和/或 y 轴范围。
代表:
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')
p1 + p2
由reprex package (v0.3.0) 于 2020 年 2 月 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') +
xlim(ggplot_build(p1)$layout$panel_scales_x[[1]]$range$range) +
ylim(ggplot_build(p1)$layout$panel_scales_y[[1]]$range$range)
p1 + p2
由reprex package (v0.3.0) 于 2020-02-01 创建
有人有什么想法吗?
【问题讨论】:
-
我能问一下您已经在做的事情有什么问题吗?解决方案会是什么样子?你想要一些像
f(p1 + p2)这样设置坐标轴的函数吗? -
是的,我希望能够直接在 pkg 中有一个选项来执行此操作,因为我的真实示例要复杂得多.. 虽然,我现在找到了解决方案,但我会发布尽快回答