Zacznij terazZacznij za darmo

Dodaj filtr roku: suwak numeryczny

Suwaki mogą służyć do podobnych celów co pola numeryczne – oba pozwalają użytkownikowi wybrać liczbę.

Jeśli wartość początkowa suwaka (argument value) jest pojedynczą liczbą, suwak umożliwia wybór jednej wartości. Natomiast jeśli wartość początkowa jest wektorem dwóch liczb, suwak pozwala wybrać dwie wartości zamiast jednej.

Różne kontrolki wejściowe mogą mieć różne argumenty. Zapamiętanie wszystkich argumentów każdej z nich bywa trudne. Aby sprawdzić, jakie argumenty obsługuje dana funkcja wejściowa, zajrzyj do jej dokumentacji lub pliku pomocy.

To ćwiczenie jest częścią kursu

Studia przypadków: tworzenie aplikacji webowych w Shiny w R

Zobacz kurs

Instrukcje do ćwiczenia

  • Dodaj sliderInput() do UI z identyfikatorem "years" i etykietą "Years" (wiersz 14).
    • Ustaw wartość minimalną na najwcześniejszy rok w zbiorze danych, a wartość maksymalną na najpóźniejszy rok w zbiorze danych.
    • Domyślnie końce suwaka powinny być ustawione na 1977 i 2002, tak aby wyświetlane były tylko dane z tego zakresu lat (włącznie).
  • Dodaj kod po stronie serwera, który wykorzystuje lata wybrane przez użytkownika do filtrowania danych gapminder – w wynikach powinny pojawiać się tylko rekordy z wybranego zakresu (wiersz 28).

Interaktywne ćwiczenie praktyczne

Spróbuj tego ćwiczenia, uzupełniając ten przykładowy kod.

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)
Edytuj i uruchom kod