idf4floor
idf4floor

Reputation: 73

checkbox not selected in a shiny app

I need to prepare a shiny app for a school project. This is a link of what it is supposed to look like

https://yuvaln.shinyapps.io/olympics/

If you look at the app you see there is a checkbox named medals.When you open the app they are all selected but in the event the user decides to uncheck them all there should be a small error and no graph should be drawn.

I am having trouble getting to this, when I uncheck all the boxes in my app it draws an empty drawing

This is the important part of the code:

 fluidRow(
  column(3,checkboxGroupInput("Medals", label = strong("Medals"),
  choices = list("Total" = "TOTAL", "Gold" = 'GOLD',
  "Silver" = 'SILVER','Bronze'='BRONZE'),
   selected = c('TOTAL','GOLD','SILVER','BRONZE')))),

  fluidRow(
    mainPanel(plotOutput('coolplot'),width = '40%'))
)    
)
  server <- function(input, output){output$coolplot<-renderPlot(plot.medals2(input$country,
  input$Startingyear,input$Endingyear,input$Medals))}
  shinyApp(ui = ui, server = server)

I am using a function plot.medals2 that gets a vector of medals ,start year, ending year, country and returns a drawing of the graph.

Upvotes: 0

Views: 1328

Answers (1)

Valter Beaković
Valter Beaković

Reputation: 3250

Since you didn't post the complete code, I have recreated an example using the Iris data set. I guess the code below answers your question...

library(shiny)
library(ggplot2)
library(dplyr)

ui <- shinyUI(fluidPage(

    # Application title
    titlePanel("Checkbox example"),
    fluidRow(
            column(3,checkboxGroupInput("example", label = strong("Species"),
                                        choices = levels(iris$Species),
                                        selected = levels(iris$Species)))),
    fluidRow(
            mainPanel(plotOutput('coolplot'),width = '40%'))


))



server <- shinyServer(function(input, output) {

    irisSubset <- reactive({
            validate(
                    need(input$example != "", 'Please choose at least one feature.')
            )
            filter(iris, Species %in% input$example)
    })

    output$coolplot<-renderPlot({
            gg <- ggplot(irisSubset(), aes(x = Species, y = Sepal.Length))
            gg <- gg + geom_boxplot()
            print(gg)
    })

})

# Run the application 
shinyApp(ui = ui, server = server)

Upvotes: 1

Related Questions