切换两个面条标签的位置并跨列组合一个标签

Switching position of two facet strip labels and combine one label across columns

我在对特定时间点内查看不同医疗设备的数据集进行分面时遇到问题。我想要做的图使用带有两个变量的 facet_wrap (我知道我也可以使用 facet_grid 但在这种情况下更喜欢 facet_wrap 的外观)

我遇到的问题是: 1.) 条带标签的方向,我希望顶部条带位于另一个下方并且 2) 我希望底部条带标签跨越两列,因为它是相同的。

示例数据集和代码如下:

library(tidyverse)
library(ggplot2)

dt <- tibble(device_type = c("Stent","Stent","Stent","Stent", "Pace","Pace","Pace","Pace"),
             days = c(5,10,15,2,4,6,6,8),
             generation = c("First", "Second","First", "Second","First", "Second","First", "Second"),
             year = c("Before", "Before","After", "After","Before", "Before","After", "After"))


dt %>% 
  ggplot(aes(x=generation, y= days))+
    geom_bar(stat = "identity")+
    facet_wrap(~device_type + year, strip.position = "bottom", nrow = 1)+
    theme(strip.placement = "outside")

给出了情节:

我试图让小平面标签的方向看起来像在这里:

我首先尝试将 facet_wrap 行中变量的位置更改为 facet_wrap(~year + device_type, strip.position = "bottom", nrow = 1) 但这改变了情节,将分组分成年份,这对于我正在使用它的实际数据集。

我发现这个 post 利用 facet_nested 但无法让它与条带标签的切换一起工作。任何帮助或想法将不胜感激。

这可以通过 teunbrand 编写的 ggh4x 包轻松完成: 使用 facet_nested_wrap 函数: 你可以改变你想合并的,只需要改变facet_nested_wrap:

中的顺序
library(tidyverse)
#install.packages("ggh4x")
library(ggh4x)

dt %>% 
  ggplot(aes(x=generation, y= days))+
  geom_bar(stat = "identity")+
  facet_nested_wrap(~year + device_type, nrow = 1, ncol=4)