title: How to specify the size of a graph in ggplot2 independent of axis labels
body: <p>Say I have a data frame and want to make a plot</p>
  
  <pre><code>df &lt;- melt(iris)
  
  p &lt;- ggplot(data = df, aes(x = Species, y = value)) + 
         geom_boxplot() + theme(aspect.ratio = 1)
  </code></pre>
  
  <p>I then want to use ggsave() to save a pdf of this plot</p>
  
  <pre><code>ggsave(plot = p, width = 3, height = 3, dpi = 300, filename = "not squished axis.pdf")
  </code></pre>
  
  <p><a href="https://i.stack.imgur.com/44pI0.jpg" rel="noreferrer"><img src="https://i.stack.imgur.com/44pI0.jpg" alt="enter image description here"></a></p>
  
  <p>The problem is that I want to specify the dimensions of the plot itself but independently of the axis labels so that the plot specified below will have the same size and dimensions in terms of the absolute length of the axes.</p>
  
  <pre><code>q &lt;- ggplot(data = df, aes(x = Species, y = (value)*10000000)) +
         geom_boxplot() + theme(aspect.ratio = 1)
  
  ggsave(plot = q, width = 3, height = 3, dpi = 300, filename = "squished axis.pdf")
  </code></pre>
  
  <p><a href="https://i.stack.imgur.com/j5B3x.jpg" rel="noreferrer"><img src="https://i.stack.imgur.com/j5B3x.jpg" alt="enter image description here"></a></p>
  
  <p>Is there a way to do this easily?</p>
  
  <p>Here is an example of a plot closer to what I would like in terms of the axis lengths:</p>
  
  <p><a href="https://i.stack.imgur.com/mVytI.jpg" rel="noreferrer"><img src="https://i.stack.imgur.com/mVytI.jpg" alt="enter image description here"></a></p>
  
  <p>the only problem is that by changing the aspect ratio, I end up squishing the y axis to make the x axis closer to even in length...</p>