LoslegenKostenlos loslegen

Füge einen Jahresfilter hinzu: numerischer Schieberegler

Slider-Inputs können ähnlich eingesetzt werden wie numerische Inputs, da beide dem User eine Möglichkeit geben, eine Zahl auszuwählen.

Wenn der anfängliche Wert (das Argument value) des Sliders eine einzelne Zahl ist, wird der Slider zur Auswahl einzelner Zahlen verwendet. Wenn der anfängliche Wert jedoch ein Vektor aus zwei Zahlen ist, dient der Slider dazu, zwei Zahlen auszuwählen statt nur eines einzelnen Werts.

Wir haben bereits gesehen, dass unterschiedliche Inputs verschiedene Argumente haben können. Es kann schwierig sein, sich die exakten Argumente jedes Inputs zu merken. Der einzige Weg herauszufinden, welche Argumente du bei einer bestimmten Input-Funktion verwenden kannst, ist ein Blick in deren Dokumentation oder Hilfedatei.

Diese Übung ist Teil des Kurses

Fallstudien: Webanwendungen mit Shiny in R erstellen

Kurs anzeigen

Anleitung zur Übung

  • Füge im UI einen sliderInput() mit der ID "years" und dem Label "Years" hinzu (Zeile 14).
    • Setze den Minimalwert auf das früheste Jahr im Datensatz und den Maximalwert auf das letzte Jahr im Datensatz.
    • Standardmäßig sollen die Endpunkte des Sliders auf 1977 und 2002 gesetzt sein, sodass nur Daten zwischen diesen beiden Jahren (einschließlich) angezeigt werden.
  • Ergänze im Server Code, sodass die im Input ausgewählten Jahre zum Subsetten der gapminder-Daten verwendet werden und nur Einträge innerhalb dieser Jahre angezeigt werden (Zeile 28).

Interaktive Übung

Vervollständige den Beispielcode, um diese Übung erfolgreich abzuschließen.

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 bearbeiten und ausführen