I'm working on a very basic facet plot where I'm using ggh4x to attain a nested faceting scheme as per the figure below:

I have two main issues with this figure, I wish to organize it in two columns showing hap1 and hap2 as well as having the top-level facet shown only once instead of having it repeated for every row all that without having to change the structure/shape of the nested barplots.
This is the code I'm using
library(readr)
library(ggh4x)
library(ggplot2)
library(RColorBrewer)
df_joint <- readr::read_tsv("path/to/samples_model3p_nest.tsv")
df_joint$strandness <- factor(df_joint$strandness, levels=c('+', '-'))
### Personalized stripes
color_strips <- strip_nested(
background_x = elem_list_rect(fill=c(brewer.pal(12, "Set3")[c(7, 7, 7, 7, 6, 6, 6, 6, 9, 9, 9, 9,
9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9,
9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9,
9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9,
9, 9, 9, 9, 9, 9)])),
text_x = elem_list_text(face=c("bold", "bold", "bold", "bold", "bold", "bold", "bold", "bold",
"plain", "plain", "plain", "plain", "plain", "plain", "plain",
"plain", "plain", "plain", "plain", "plain", "plain", "plain",
"plain", "plain", "plain", "plain", "plain", "plain", "plain",
"plain", "plain", "plain", "plain", "plain", "plain", "plain",
"plain", "plain", "plain", "plain", "plain", "plain", "plain",
"plain", "plain", "plain", "plain", "plain", "plain", "plain",
"plain", "plain", "plain", "plain")),
by_layer_x = FALSE
)
###NESTED FACET
both <- ggplot(df_joint, aes(as.factor(kpattern), fill=strandness)) +
geom_bar() + theme_bw() + theme(axis.text.x=element_blank(),
axis.ticks.x=element_blank(),
panel.grid.major=element_blank(),
plot.title=element_text(face='bold', hjust=.5),
legend.title=element_text(face='italic'), legend.position.inside=c(0.8,0.05)) +
guides(fill=guide_legend(ncol=2, keywidth=1, position="inside")) +
labs(x=expression(italic("k")*"-"*patterns~distribution)) +
scale_fill_manual(values=c("+"="red", "-"="blue")) +
coord_cartesian(ylim=c(0,125), expand=FALSE)
both + facet_nested_wrap(~haplotype + id, strip=color_strips)
dput can be challenging because the dataset is quite big, and every sample has many repeats. However, I'll add what I can if strictly necessary, thanks in advance!
