ggplot with Shiny but reactive plot

When you summarise the data, you are dropping the Lugar and Medicion variables and adding precip, that is why you get the error messages, you would need to do something like this:

library(shiny)
library(tidyverse)

server <- function(input, output, session) {
    
    # Sample data
    precip <- data.frame(
  stringsAsFactors = FALSE,
                    Dia = c(17,18,19,20,21,
                            22,23,24,25,26,27,28,29,17,18,19,29,30,
                            31,1,2,3,4,5,6,7,8,17,18,19,20,21,22,
                            23,24,25,26,27,16,17,18,19,20,21,22,23,
                            24,25,26,5,6,7,8,9,10,11,12,13,14,15),
               Medicion = c(50,17,13,12,3,6,
                            0.3,NA,13,1,4,20,3,NA,0,0,0,0,20,NA,
                            NA,NA,NA,NA,NA,NA,NA,NA,1,0,0,5,9,0,1,
                            0,0,0,0,2,17,58,32,0,9,0.5,1,25,1,0.5,
                            4,10,3,3,8,36,13,1,0.5,0.5),
                  Lugar = c("UNIAGRARIA",
                            "UNIAGRARIA","UNIAGRARIA","UNIAGRARIA","UNIAGRARIA",
                            "UNIAGRARIA","UNIAGRARIA","UNIAGRARIA","UNIAGRARIA",
                            "UNIAGRARIA","UNIAGRARIA","UNIAGRARIA",
                            "UNIAGRARIA","GRANADA NORTE","GRANADA NORTE",
                            "GRANADA NORTE","GRANADA NORTE","GRANADA NORTE",
                            "GRANADA NORTE","RIO FRIO","RIO FRIO","RIO FRIO","RIO FRIO",
                            "RIO FRIO","RIO FRIO","RIO FRIO","RIO FRIO",
                            "CHICU","CHICU","CHICU","CHICU","CHICU","CHICU",
                            "CHICU","CHICU","CHICU","CHICU","CHICU","RIO FRIO",
                            "RIO FRIO","RIO FRIO","RIO FRIO","RIO FRIO",
                            "RIO FRIO","RIO FRIO","RIO FRIO","RIO FRIO",
                            "RIO FRIO","RIO FRIO","GRANADA NORTE","GRANADA NORTE",
                            "GRANADA NORTE","GRANADA NORTE","GRANADA NORTE",
                            "GRANADA NORTE","GRANADA NORTE","GRANADA NORTE",
                            "GRANADA NORTE","GRANADA NORTE","GRANADA NORTE"),
                    Mes = as.factor(c("Abril","Abril","Abril","Abril","Abril",
                                      "Abril","Abril","Abril","Abril",
                                      "Abril","Abril","Abril","Abril","Marzo",
                                      "Marzo","Marzo","Marzo","Marzo","Marzo",
                                      "Marzo","Marzo","Marzo","Marzo",
                                      "Marzo","Marzo","Marzo","Marzo","Marzo",
                                      "Marzo","Marzo","Marzo","Marzo","Marzo",
                                      "Marzo","Marzo","Marzo","Marzo",
                                      "Marzo","Abril","Abril","Abril","Abril",
                                      "Abril","Abril","Abril","Abril","Abril",
                                      "Abril","Abril","Mayo","Mayo","Mayo",
                                      "Mayo","Mayo","Mayo","Mayo","Mayo",
                                      "Mayo","Mayo","Mayo"))
     )
    
    output$plot <- renderPlot({
        req(input$sel_Lugar)
        precip %>%
            filter(Lugar == input$sel_Lugar) %>%
            group_by(Lugar, Mes) %>%
            summarise(precip = sum(Medicion, na.rm = TRUE)) %>% 
            ggplot(aes(x = Lugar, y = precip, fill = Mes)) +
            geom_col() +
            scale_fill_manual(values=c("#E23D2C","#BAA512","#512B9A","#21AB3F")) + 
            labs(title = "Distribución general de la precipitación",
                 caption= "Fuente: propia")+
            ylab("Precipitación (mm)") +
            theme_light()
        
    })
}

ui <- basicPage(
    h1("R Shiny Dynamically create Drop Down List"),
    selectInput(inputId = "sel_Lugar",
                label = "Choose Sales Rep",
                choices = precip$Lugar,
                "Names"),
    plotOutput("plot")
)

shinyApp(ui = ui, server = server)
1 Like