I'm trying to do something very similar, renderPlot() only after input$RUN button has been executed.
Using req() results the same as using observeEvent() in my case, where once the button is executed a single time, the renderPlot will loop through the function continuously and not function like I want which is:
-> renderPlot() only once the button is clicked.