like below fixes the issue for your help! It seems that the answer was much simpler as I thought. Putting breaks = function(x) unique(floor(pretty(x))) in my scale_x_continuous() function produced integer-only breaks, even without transforming the data into Date format. Removing the unique() does not change the behavior in my case, but it might do in other cases.
How switch between geom_line and geom_bar visualization in ggplot2 in Shiny - R
I wish this helpful for you You can save ggplot objects to a variable and build onto it however you need. Outside of a Shiny context, you could do this by referring to a variable, or encapsulating the task of adding onto a ggplot in a function. Inside a Shiny context, you can decide what to add to the object based on a user input. For example, in a plain R context: