Aan de slagBegin gratis

Voeg een jaarfilter toe: numerieke schuifregelaar

Schuifregelaars kun je voor vergelijkbare doelen gebruiken als numerieke invoervelden: beide geven de gebruiker een manier om een getal te kiezen.

Als de beginwaarde (het value-argument) van de schuifregelaar één getal is, dan gebruik je de schuif om enkele waarden te selecteren. Maar als de beginwaarde een vector met twee getallen is, dan gebruik je de schuif om twee getallen te selecteren in plaats van één enkele waarde.

We hebben al gezien dat verschillende invoerelementen verschillende argumenten kunnen hebben. Het kan lastig zijn om de exacte argumenten per input te onthouden. De enige manier om te ontdekken welke argumenten je met een specifieke inputfunctie kunt gebruiken, is door de documentatie of help-pagina te raadplegen.

Deze oefening maakt deel uit van de cursus

Casestudies: webapplicaties bouwen met Shiny in R

Bekijk cursus

Oefeninstructies

  • Voeg een sliderInput() toe aan de UI met ID "years" en het label "Years" (regel 14).
    • Stel de minimale waarde in op het vroegste jaar in de gegevensset en de maximale waarde op het laatste jaar in de gegevensset.
    • Standaard moeten de eindpunten van de schuifregelaar zijn ingesteld op 1977 en 2002, zodat alleen gegevens tussen deze twee jaren (inclusief) worden getoond.
  • Voeg code toe aan de server zodat de in de input gekozen jaren worden gebruikt om de gapminder-gegevens te filteren en alleen records binnen deze jaren verschijnen (regel 28).

Interactieve oefening met praktijkervaring

Probeer deze oefening door deze voorbeeldcode aan te vullen.

ui <- fluidPage(
  sidebarLayout(
    sidebarPanel(
      textInput("title", "Title", "GDP vs life exp"),
      numericInput("size", "Point size", 1, 1),
      checkboxInput("fit", "Add line of best fit", FALSE),
      radioButtons("color", "Point color",
                   choices = c("blue", "red", "green", "black")),
      selectInput("continents", "Continents",
                  choices = levels(gapminder$continent),
                  multiple = TRUE,
                  selected = "Europe"),
      # Add a slider selector for years to filter
      ___("years", ___, ___, ___, ___)
    ),
    mainPanel(
      plotOutput("plot")
    )
  )
)

# Define the server logic
server <- function(input, output) {
  output$plot <- renderPlot({
    # Subset the gapminder data by the chosen years
    data <- subset(gapminder,
                   continent %in% input$continents &
                   year >= ___$years[1] & year <= ___$years[2])
    
    p <- ggplot(data, aes(gdpPercap, lifeExp)) +
      geom_point(size = input$size, col = input$color) +
      scale_x_log10() +
      ggtitle(input$title)
    
    if (input$fit) {
      p <- p + geom_smooth(method = "lm")
    }
    p
  })
}

shinyApp(ui = ui, server = server)
Code bewerken en uitvoeren