I have a horizontal bar chart that can contain anywhere between 1 and 300 bars depending on selections in a shiny dashboard. When there are many bars being displayed, they are too thin. I would like to set a minimum width to the bar and have a vertical scroll bar to see those which don’t fit on the first page. I can provide an image of the squished bars if the problem is unclear.
I’ve solved this for anyone who stumbles upon this question in the future.
Put the plotly output in a div container with a max height and overflow-y set to scroll like so:
div(style=‘max-height:500px; overflow-y: scroll; position: relative’,plotlyOutput(“plot”))
In ouput$plot dynamically set the plot height with this:
plot_height <- 500 + 10*nrow(df) where df is the dataframe used to create the plot. the plot has one bar per row in the dataframe, so this scales linearly with the number of records.