CommencezCommencez gratuitement

Ajouter un filtre d'années : curseur numérique

Les curseurs peuvent servir à des fins semblables aux champs numériques, puisqu'ils offrent tous deux un moyen pour l'utilisateur de sélectionner un nombre.

Si la valeur initiale fournie (l'argument value) du curseur est un seul nombre, alors le curseur servira à sélectionner des nombres uniques. Toutefois, si la valeur initiale est un vecteur de deux nombres, le curseur servira à sélectionner deux nombres plutôt qu'une seule valeur.

Nous avons déjà vu que différents champs de saisie peuvent avoir des arguments différents. Il peut être difficile de se rappeler exactement quels arguments chaque champ accepte. La meilleure façon de connaître les arguments offerts par une fonction de saisie donnée est de consulter sa documentation ou son fichier d'aide.

Cette activité fait partie du cours

Études de cas : créer des applications Web avec Shiny en R

Voir le cours

Instructions de l’exercice

  • Ajoutez un sliderInput() à l'interface avec l'ID « years » et l'étiquette « Years » (ligne 14).
    • Définissez la valeur minimale à l'année la plus ancienne de l'ensemble de données et la valeur maximale à l'année la plus récente.
    • Par défaut, les bornes du curseur doivent être fixées à 1977 et 2002, afin que seules les données entre ces deux années (inclusivement) soient affichées.
  • Ajoutez du code au serveur pour que les années choisies dans l'entrée servent à filtrer les données gapminder, et que seuls les enregistrements compris dans ces années s'affichent (ligne 28).

Exercice interactif pratique

Essayez cet exercice en complétant ce code d’exemple.

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)
Modifier et exécuter le code