我对小平面图感兴趣,它既有自由尺度(因为不同小平面组的单位不同),也有可变的小平面宽度或高度(因为不同的小平面中绘制了不同数量的观察值)。目前,我能够实现其中一个目标,但不能同时实现两个目标。这是一个最小的例子:
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_grid
和 space = "free"
选项,我可以获得可变的面尺寸:
p + facet_grid(units~year, scales = "free", space = "free")
使用 facet_wrap
和 scales = "free"
选项,我可以获得可变单位。
p + facet_wrap(units~year, scales = "free")
知道如何获得可变的facet大小和自由尺度(最好使用facet_grid的facet header 结构)吗?
最佳答案
您可以使用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 于 2022 年 1 月 18 日创建(v2.0.1)
免责声明:我写了 ggh4x。
关于r - ggplot 方面的可用空间和比例,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/70758765/