gpt4 book ai didi

r - 组合ggplot2对象时在拼凑中设置轴限制

转载 作者:行者123 更新时间:2023-12-03 23:27:42 26 4
gpt4 key购买 nike

合并时ggplot2对象使用 patchwork我希望能够有一个选项,我可以轻松地为所有图设置一个选项,使其具有相同的 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



创建于 2020-02-01 由 reprex package (v0.3.0)

预期结果将其设置为在两个图中具有相同范围的两个轴:

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



创建于 2020-02-01 由 reprex package (v0.3.0)

有没有人有任何想法?

最佳答案

好吧,我很抱歉回答我自己的问题,但我刚刚找到了解决方案..

这可以通过使用 & 很好地实现。 ,它将函数应用于拼凑对象中的所有图。

1)reprex:

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 由 reprex package (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 由 reprex package (v0.3.0)

关于r - 组合ggplot2对象时在拼凑中设置轴限制,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60016390/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com