A combination of some data wrangling (to get better labels) and faceting with some strip placement tweaks should do the trick:
library(hrbrthemes) # gitlab.com/hrbrmstr/hrbrthemes or github
library(ggplot2)
Pay.Quartiles <- rep(c("Lower", "Lower Middle", "Upper Middle", "Upper"), 2)
Gender <- rep(c("Female", "Male"), each = 4)
Percentage <- c(65.1,57.5,47.4, 41.3, 34.9, 42.5, 52.6, 58.7)/100
xdf <- data.frame (Pay.Quartiles, Gender, Percentage, stringsAsFactors=FALSE)
xdf$lab <- sprintf("%s\n%s", Gender, scales::percent(Percentage))
ggplot(xdf) +
geom_col(
aes(lab, Percentage, fill = Gender),
width = 0.5, show.legend = FALSE
) +
facet_wrap(
~Pay.Quartiles, scales = "free_x", nrow = 1, strip.position = "bottom"
) +
hrbrthemes::scale_y_percent() +
hrbrthemes::scale_fill_ipsum() +
labs(x = NULL, y = NULL) +
hrbrthemes::theme_ipsum_rc(grid = "Y") +
theme(strip.placement = "outside") +
theme(strip.text = element_text(hjust=0.5)) +
theme(panel.spacing.x = unit(0.33, "lines"))
