Kom igångKom igång gratis

Lägg till ett årsfilter: numerisk skjutreglage-inmatning

Skjutreglage kan användas för liknande ändamål som numeriska inmatningsfält, eftersom båda låter användaren välja ett tal.

Om det angivna startvärdet (argumentet value) är ett enstaka tal används skjutreglaget för att välja ett enskilt värde. Om startvärdet däremot är en vektor med två tal används skjutreglaget för att välja två värden i stället för ett.

Vi har redan sett att olika inmatningselement kan ha olika argument. Det kan vara svårt att komma ihåg exakt vilka argument varje inmatningsfunktion använder. Det enda sättet att ta reda på vilka argument en specifik inmatningsfunktion stöder är att läsa dess dokumentation eller hjälpfil.

Den här övningen är en del av kursen

Fallstudier: Bygg webbapplikationer med Shiny i R

Visa kurs

Övningsinstruktioner

  • Lägg till ett sliderInput() i UI:t med ID:t "years" och etiketten "Years" (rad 14).
    • Sätt minimivärdet till det tidigaste året i datamängden och maximivärdet till det senaste året.
    • Som standard ska reglagets ändpunkter vara satta till 1977 och 2002, så att endast data inom dessa år (inklusive) visas.
  • Lägg till kod i servern så att de valda åren används för att filtrera gapminder-datan och att bara poster inom det valda intervallet visas (rad 28).

Interaktiv övning med praktiskt arbete

Testa den här övningen genom att slutföra den här exempelkoden.

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)
Redigera och kör kod