title: ggplot2 plot stretches in flexdashboard and cuts bottom
body: <p>I want to show a few different plots on my Shiny application, separating them in little named sections (using Markdown's <code>###</code>). However, the plots I'm printing inside those sections have their bottoms cut. Not only that, but when I change their <code>data-height</code> attribute, they stretch just to guarantee that they'll still be cut.</p>
  
  <p><a href="https://i.stack.imgur.com/LOefi.png" rel="nofollow noreferrer"><img src="https://i.stack.imgur.com/LOefi.png" alt="enter image description here"></a></p>
  
  <p><a href="https://i.stack.imgur.com/YL84H.png" rel="nofollow noreferrer"><img src="https://i.stack.imgur.com/YL84H.png" alt="enter image description here"></a></p>
  
  <p>I might be able to set a data-height value that's large enough that it won't cut the image at all, but by then it will be extremely deformed. How do I keep the plot the same size while resizing the section it's in? Or even better, is it possible to make it so the section size automatically fits to the plot size?</p>
  
  <p>--- EDIT:</p>
  
  <pre><code>---
  title: "title"
  author: "author"
  date: "date"
  output: 
    flexdashboard::flex_dashboard:
      orientation: columns
      vertical_layout: scroll
      logo: ""
      favicon: ""
      source_code: embed
      runtime: shiny
  runtime: shiny
  ---
  
  ```{r setup, include=FALSE}
  library (tidyverse)
  ```
  
  # Tab 1
  
  ## Column
  
  ### Section 1
  
  ```{r echo=FALSE}
  # Data processing
  
  inputPanel (
      # inputs
  )
  
  renderPlot ({
      # Data processing
  
      step = 0.05
      max = step * ceiling(max(retention_rate$high) / step)
      min = step * floor(min(retention_rate$low) / step)
  
      ggplot (retention_rate,
              aes (x = dsi, y = median,
                   ymin = low, ymax = high,
                   colour = ab_group, fill = ab_group)) +
          theme (panel.background = element_rect (fill = 'white'),
                 panel.grid.major = element_line (colour = 'grey90', size = 0.20),
                 panel.grid.minor = element_line (colour = 'grey90', size = 0.10),
                 plot.title = element_text (lineheight = 1.15),
                 axis.title.y = element_text (angle = 0),
                 axis.title = element_text (size = 10),
                 text = element_text (size = 10),
                 legend.title = element_text (size = 10),
                 strip.text = element_text (size = 10, angle = 0),
                 plot.caption = element_text (hjust = 0.5, size = 9)) +
          geom_vline (xintercept = c (1, 3, 7, 14, 28),
                      colour = 'gray80', linetype = 2, size = 0.4) +
          geom_line () +
          geom_ribbon (aes (colour = NULL), alpha = 0.2) +
          scale_x_continuous (breaks = seq (0, max (retention_rate$dsi), 5)) +
          scale_y_continuous (limits = c  (min, max),
                              breaks = seq (min, max, step),
                              labels = sprintf ('%.0f %%', 100 * seq (min, max, step))) +
          scale_colour_brewer (palette = 'Dark2') +
          scale_fill_brewer (palette = 'Dark2') +
          facet_grid (source~country) +
          labs(x = '',
               y = '',
               colour = '',
               fill = '',
               title = '',
               subtitle = '')
  })
  ```
  
  ### Days Active
  
  ```{r echo=FALSE}
  # Data processing
  
  inputPanel (
      # inputs
  )
  
  renderPlot ({
      # Data processing
  
      step = 0.5
      max = step * ceiling(max(da$high) / step)
      min = 0
  
      ggplot (da, aes (x = '', y = median,
                       ymin = low, ymax = high,
                       colour = ab_group, fill = ab_group)) +
          theme (panel.background = element_rect (fill = 'white'),
                 panel.grid.major = element_line (colour = 'grey90', size = 0.20),
                 panel.grid.minor = element_line (colour = 'grey90', size = 0.10),
                 plot.title = element_text (lineheight = 1.15),
                 axis.title.y = element_text (angle = 0),
                 axis.title = element_text (size = 10),
                 text = element_text (size = 10),
                 legend.title = element_text (size = 10),
                 strip.text = element_text (size = 10, angle = 0),
                 plot.caption = element_text (hjust = 0.5, size = 9)) +
          geom_col (aes (colour = NULL), position = 'dodge', alpha = 0.60, width = 2 / 3) +
          geom_errorbar (position = position_dodge (width = 2 / 3), width = 1 / 3) +
          geom_text (position = position_dodge (width = 2 / 3),
                     aes (label = sprintf ('%.2f', median)), #hjust = - 1 / (nrow (da) - 1),
                     vjust = -1) +
          scale_y_continuous (limits = c (min, max),
                              breaks = seq (min, max, step)) +
          scale_colour_brewer (palette = 'Dark2') +
          scale_fill_brewer (palette = 'Dark2') +
          facet_grid (source~country) +
          labs (x = '',
                y = '',
                fill = '', colour = '',
                title = '',
                subtitle = '')
  })
  ```
  </code></pre>