You can do this in one additional step - add renderUI :
```{r, echo=FALSE, warning=FALSE, message=FALSE} g2g14 <- readOGR("input//geodata", "g2g14") # no projection needs to be specified old_geodata <- g2g14@data inputPanel( selectInput("map.party", label = "Partei", choices = unique(long_data$Partei), selected = "FDP"), selectInput("map.year", label = "Wahljahr", choices = unique(format.Date(long_data$Jahr, "%Y")), selected = "1971") ) output$unsized <- renderPlot({ partydata <- long_data %>% filter(Partei == input$map.party & Jahr == as.Date(input$map.year, "%Y")) g2g14@data <- old_geodata g2g14@data <- merge( g2g14@data , partydata, by.x = "GMDNR",by.y ="BFSNr") cols <- brewer.pal(5, "Purples") brks <- seq(0,100,20) colsForMap <- cols[findInterval( g2g14@data $Staerke, vec = brks[1:5])] plot(g2g14, col = colsForMap, border = "white") legend("topleft", legend = levels(cut( g2g14@data $Staerke, brks)), fill = cols, border = "white", title = "Parteistärke in %") }) renderUI({ plotOutput("unsized", height = 500, width = 500) }) ```
Tested with an example document created when starting a new RMD-shiny document:
```{r, echo=FALSE} inputPanel( selectInput("n_breaks", label = "Number of bins:", choices = c(10, 20, 35, 50), selected = 20), sliderInput("bw_adjust", label = "Bandwidth adjustment:", min = 0.2, max = 2, value = 1, step = 0.2) ) output$unsized <- renderPlot({ hist(faithful$eruptions, probability = TRUE, breaks = as.numeric(input$n_breaks), xlab = "Duration (minutes)", main = "Geyser eruption duration") dens <- density(faithful$eruptions, adjust = input$bw_adjust) lines(dens, col = "blue") }) renderUI({ plotOutput("unsized", height = 250, width = 250) }) ```