title: set ggplot plots to have same x-axis width and same space between dot plot rows
body: <p><strong>Updated question to incorporate a partial solution already answered on SO</strong></p>
  
  <p>I am using <code>ggplot2</code> to create several plots and <code>gridExtra</code> to combine the plots into one figure with several panels, all in one column. My problem is that I can't get the space between the dot plot rows to be consistent in both plots.</p>
  
  <p><img src="https://i.stack.imgur.com/6wV4h.png" alt="enter image description here"></p>
  
  <pre><code>library(ggplot2)
  # data
    dat1 &lt;- data.frame(VARIABLES=c("Item 1", "Item 2 is a little longer"),
                       est=c(.3, .5),
                       min=c(.2, .4),
                       max=c(.4, .7))
    dat2 &lt;- data.frame(VARIABLES=c("Item 3", 
                                   "Item 4 is even longer if you can believe it",
                                   "And there is a third item",
                                   "And a fourth item"),
                       est=c(.3, .5, .3, .5),
                       min=c(.2, .4, .2, .4),
                       max=c(.4, .7, .4, .7))
    dat &lt;- c("dat1", "dat2")
    labs &lt;- c("Plot 1", "Plot2")
  # create plots
    count &lt;- 1
    for (i in dat) {
      p &lt;- ggplot(get(i), aes(x=reorder(as.character(VARIABLES), est), 
                                y=est)) +
      geom_pointrange(aes(ymin=min,
                          ymax=max),
                      linetype="dashed") +
      geom_point(size=3) +
      ylim(-1,1) +
      theme_bw() +
      labs(title = labs[count]) +
      theme(legend.position="none") +
      coord_flip()
      assign(paste(i, "plot", sep="."), p)
      count &lt;- count+1
    }
  # combine plots
    library(gridExtra)
    # approach suggested by @baptise
    # http://stackoverflow.com/questions/13294952/left-align-two-graph-edges-ggplot
    gA &lt;- ggplotGrob(dat1.plot)
    gB &lt;- ggplotGrob(dat2.plot)
    maxWidth = grid::unit.pmax(gA$widths[2:5], gB$widths[2:5])
    gA$widths[2:5] &lt;- as.list(maxWidth)
    gB$widths[2:5] &lt;- as.list(maxWidth)
    grid.arrange(gA, gB, ncol=1)
  </code></pre>