免费 space 并在 ggplot 方面进行缩放

Free space and scales in ggplot facets

我对具有自由尺度(因为不同方面组的单位不同)和可变方面宽度或高度(因为不同方面在其中绘制了不同数量的观察值)的方面图感兴趣。目前,我能够实现其中一个目标,但不能同时实现这两个目标。这是一个最小的例子:

library(tidyverse)
        
sample_data <- data.frame(outcome = rep(letters[1:6], 2),
                          value = rep(c(1:2, 100*1:4), 2),
                          units = rep(c("days", "days", "pax", "pax", "pax", "pax"), 2),
                          year = rep(2020:2021, each = 6)) 

p <- ggplot(sample_data, aes(x = outcome, y = value)) + geom_col() + coord_flip()

使用 facet_gridspace = "free" 选项,我能够获得可变的小平面尺寸:

p + facet_grid(units~year, scales = "free", space = "free") 

使用 facet_wrapscales = "free" 选项,我可以获得变量单位。

p + facet_wrap(units~year, scales = "free")

知道如何获得可变刻面尺寸和自由刻度(最好使用 facet_grid 的刻面头结构)吗?

您可以使用 ggh4x::facet_grid2() 中的 independent 参数来实现此目的。请注意,您不能在同一维度上同时拥有自由轴和独立尺度。

library(tidyverse)

sample_data <- data.frame(outcome = rep(letters[1:6], 2),
                          value = rep(c(1:2, 100*1:4), 2),
                          units = rep(c("days", "days", "pax", "pax", "pax", "pax"), 2),
                          year = rep(2020:2021, each = 6)) 

ggplot(sample_data, aes(x = value, y = outcome)) + 
  geom_col() +
  ggh4x::facet_grid2(
    units ~ year,
    scales = "free", space = "free_y",
    independent = "x"
  )

reprex package (v2.0.1)

于 2022 年 1 月 18 日创建

免责声明:我写了 ggh4x。