r - ggplot 方面的可用空间和比例

标签 r ggplot2 facet-wrap facet-grid

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

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") 

enter image description here

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

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

enter image description here

知道如何获得可变的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/

相关文章:

r - ggplot2 + aes_string 通过公式接口(interface)在函数内

r - 将多行转换为多列(长格式转换为宽格式不起作用(?))

R:ggplot2 - 根据标签手动设置点形状、线型和颜色

r - ggplot2:汇总行和列的独立连续填充

R 通过使用facet_wrap和数据子集的函数调用传递ggplot参数

r - 用圆圈传单 R 创建图例

r - 最大整数的预定义常量

r - 设置ggplot2标签背景色

r - 在 ggplot2 的 facet_wrap 上使用公式

r - ggplot2:使用不同比例的构面进行构面时,箱线图宽度不正确