I use Shiny with the likert-library, which outputs ggplot2 objects, to display answer distributions interactively. The user can choose which group of questions to plot (each group has various numbers of questions), and which question to group by. This means that in total there is a big variety in the number of "bars" showing up.
If I leave the height setting on auto (default), the graph becomes impossibly crowded.

There seems to be two ways to adjust height - in ui.R, I can adjust the size of the "viewport", and in the call to renderPlot, I can specify the height of the graph (if it is higher than the viewport, there is a scrollbar). If I specify a roomier graph, the graph above looks great:

However, when I go back to a question with fewer alternatives, they become stretched out to look ridiculous:

Is there a way to get the bars to have a constant width, no matter how many of them there are, and for the graph to resize dynamically without me having to calculate the specific height depending on number of elements?
renderPlotor something?