title: Arrange multiple ggplots, but avoid squishing due to axis label
body: <p>I've been using cowplot::plot_grid to arrange multiple ggplot figures, which has been working great in general.  However, I've now run into a problem where I want to include the x axis labels on just the bottom plot, but it ends up squishing all the plots (with align = "vh") or the lowest plot (with align = "v") in the column.</p>
  
  <p>Is there any way to perhaps extract the x-axis label grob, and add that as a another plot in plot_grid (perhaps similar to <a href="https://github.com/wilkelab/cowplot/blob/master/vignettes/shared_legends.Rmd" rel="nofollow noreferrer">https://github.com/wilkelab/cowplot/blob/master/vignettes/shared_legends.Rmd</a> for legends)?  Or another approach?</p>
  
  <p>Thanks for any thoughts!</p>
  
  <pre><code>library(ggplot2)
  library(cowplot)
  
  a = data.frame(a = rnorm(100), b = rep(c("laskjdflsakjd", "cknmlokfjoweijojf"), 50))
  b = data.frame(a = rnorm(100), b = rep(c("laskjdflsakjd", "cknmlokfjoweijojf"), 50))
  c = data.frame(a = rnorm(100), b = rep(c("laskjdflsakjd", "cknmlokfjoweijojf"), 50))
  
  aplot = ggplot(a, aes(x=b, y=a)) + geom_bar(stat = "identity")
  bplot = ggplot(b, aes(x=b, y=a)) + geom_bar(stat = "identity")
  cplot = ggplot(c, aes(x=b, y=a)) + geom_bar(stat = "identity") + theme(axis.text.x = element_text(angle=90, vjust = 0.5))
  
  plot_grid(aplot + theme(axis.text.x = element_blank(), axis.title.x = element_blank()),
          bplot + theme(axis.text.x = element_blank(), axis.title.x = element_blank()),
          cplot, ncol = 1, align = "vh")
  </code></pre>
  
  <p><a href="https://i.stack.imgur.com/j85IU.png" rel="nofollow noreferrer"><img src="https://i.stack.imgur.com/j85IU.png" alt="enter image description here"></a></p>