title: Consistent box width with missing values in a ggplot box plot
body: <p>In ggplot2, I want my boxes in a box plot to be of equal width even when a given level combination does not exist.</p>
  
  <p>For example, in mtcars, cyl=8 and gear=4 does not exist, which leads to larger bars in this plot:</p>
  
  <pre><code>qplot(data=mtcars, x=as.factor(cyl), y=mpg,
        colour=as.factor(gear), geom="boxplot")
  </code></pre>
  
  <p><img src="https://i.stack.imgur.com/DJKmC.jpg" alt="enter image description here"></p>
  
  <p>For a bar plot, padding our data frame with NA values for these level combinations would solve the problem, but not for box plot:</p>
  
  <pre><code>mtcars.fill &lt;- data.frame(cyl=8,gear=4,mpg=NA)
  mtcars &lt;- rbind.fill(mtcars,mtcars.fill)
  
  qplot(data=mtcars, x=as.factor(cyl), y=mpg, colour=as.factor(gear), geom="boxplot")
  
  Warning message:
  Removed 1 rows containing non-finite values (stat_boxplot). 
  </code></pre>
  
  <p>Which leads to the exact same plot.</p>
  
  <p>stat_boxplot has an argument for na values, but it is set to not remove NAs by default:</p>
  
  <pre><code>na.rm = FALSE
  </code></pre>