White space between tiles in heatplot ggplot

I have this heatplot that I've generated using ggplot2.

What I would like to do is to add white space between the variables listed in capital letters and the variables listed in lower case letters so as to separate these two categories. I still want the tiles to be of equal width.

PS. While it is strictly another question, I would also like to edit the legend so that it ranges simply from 0-20 and is split in two vertically, showing on one side the red gradient and the blue gradient on the other.

Although this is not quite perfect, because dropping the unused x-axis categories from each facet requires specifying scales='free_x' - which unfortunately does not keep the boxes the same width in each facet.

So, perhaps a better solution is to create separate plots for each category, and arrange them together. Here I put them together using cowplot::plot_grid, which allows us to set the relative widths how we want them (although you may need to tweak the rel_widths values a bit to get it just right):