CommencerCommencer gratuitement

Ajouter un filtre sur l’année : curseur numérique

Les curseurs peuvent servir à des fins similaires aux champs numériques, car ils permettent tous deux à l’utilisateur de sélectionner une valeur numérique.

Si la valeur initiale fournie (l’argument value) du curseur est un seul nombre, le curseur servira à sélectionner des valeurs uniques. En revanche, si la valeur initiale est un vecteur de deux nombres, le curseur permettra de sélectionner deux nombres au lieu d’une seule valeur.

Nous avons déjà vu que différents composants d’entrée peuvent avoir des arguments différents. Il peut être difficile de mémoriser exactement quels arguments sont utilisés par chaque entrée. Le meilleur moyen de connaître les arguments disponibles pour une fonction d’entrée donnée est de consulter sa documentation ou son fichier d’aide.

Cet exercice fait partie du cours

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

Afficher le cours

Instructions

  • Ajoutez un sliderInput() à l’UI avec l’ID "years" et l’étiquette "Years" (ligne 14).
    • Définissez la valeur minimale sur la première année du jeu de données et la valeur maximale sur la dernière année du jeu de données.
    • Par défaut, les bornes du curseur doivent être réglées sur 1977 et 2002, afin que seules les données entre ces deux années (incluses) soient affichées.
  • Ajoutez du code côté serveur pour que les années choisies dans l’entrée soient utilisées pour filtrer les données gapminder, et que seuls les enregistrements compris dans ces années apparaissent (ligne 28).

Exercice interactif pratique

Essayez cet exercice en complétant cet exemple de code.

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