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
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)