Follow

Keep Up to Date with the Most Important News

By pressing the Subscribe button, you confirm that you have read and are agreeing to our Privacy Policy and Terms of Use
Contact

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

I am having an issue with faceting a dataset looking at different medical devices over a certain time point. The figure I am looking to do uses a facet_wrap with two variables (I know I could also use facet_grid but prefer the appearance of facet_wrap in this case)

The issue I have is:
1.) The orientation of the strip labels, where I would like the top strip to be below the other one and
2) that I would like the bottom strip label to cross both columns as it is the same.

An example dataset and code is below:

MEDevel.com: Open-source for Healthcare and Education

Collecting and validating open-source software for healthcare, education, enterprise, development, medical imaging, medical records, and digital pathology.

Visit Medevel

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

which gives the plot: plot

What I am trying to get the orientation of the facet strip labels to look like is here:
desired plot

I first tried changing the position of the variables in the facet_wrap line to facet_wrap(~year + device_type, strip.position = "bottom", nrow = 1) but this alters the plot in such a way that it splits the grouping into years which is not ideal for the actual dataset im using this on.

I found this post Combine multiple facet strips across columns in ggplot2 facet_wrap utilizing facet_nested but have been unable to get this to work with the switching of the strip labels. Any help or ideas would be greatly appreciated.

>Solution :

This could be easily done with ggh4x package written by teunbrand:
Using facet_nested_wrap function:
You can change which one you want to combine, just change the order in 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)

enter image description here

Add a comment

Leave a Reply

Keep Up to Date with the Most Important News

By pressing the Subscribe button, you confirm that you have read and are agreeing to our Privacy Policy and Terms of Use

Discover more from Dev solutions

Subscribe now to keep reading and get access to the full archive.

Continue reading