R语言 如何通过放大两个不同的区域来创建两个插入的图?原始图是用`ggplot2`制作的

dced5bon  于 2023-04-18  发布在  其他
关注(0)|答案(1)|浏览(161)

bounty将在4天后到期。回答此问题可获得+50声望奖励。Daniel Valencia C.正在寻找此问题的更详细的答案

我用ggplot2做了一个图。在这个图中,我想突出显示并放大两个不同的区域。为此,我使用了ggforce包和facet_zoom( )函数。然而,这个函数只创建了一个插图,我找不到如何创建第二个插图的信息。

library(ggplot2)
library(ggforce)

ggplot(data = mtcars,
       aes(x = mpg,
           y = disp,
           color = factor(cyl),
           shape = factor(carb))) +
  geom_point() +
  facet_zoom(xlim = c(15, 20),
             ylim = c(200, 300),
             horizontal = FALSE)

除了所示的插图,我想添加这一个:

facet_zoom(xlim = c(30, 35),
           ylim = c(0, 100),
           horizontal = FALSE)

我怎样才能把第二个情节放在第一个情节的右边?

of1yzvn4

of1yzvn41#

你可以根据你想要放大的范围创建一个带有分类id的变量。有了这个变量,你可以使用xy参数和split来放大facet_zoom中的两个区域,如下所示:

library(ggplot2)
library(ggforce)
library(dplyr)

mtcars |>
  mutate(area = case_when(mpg >= 15 & mpg <= 20 & disp >= 200 & disp <= 300 ~ "A",
                          mpg >= 30 & mpg <= 35 & disp >= 0 & disp <= 100 ~ "B")) |>
  ggplot(aes(x = mpg,
             y = disp,
             color = factor(cyl),
             shape = factor(carb))) +
  geom_point() +
  facet_zoom(xy = area  %in% c("A", "B"), split = TRUE)

创建于2023-04-14带有reprex v2.0.2

相关问题