CommencerCommencer gratuitement

Ajouter un sélecteur de continent : select input

Lorsqu’il y a de nombreuses options à proposer à l’utilisateur, les boutons radio prennent beaucoup de place et ne sont pas toujours idéaux. Les « select inputs » — aussi appelées « listes déroulantes » — permettent également de demander à l’utilisateur de choisir une option parmi une liste, mais de manière plus compacte. Avec un select input, toutes les options apparaissent dans une liste défilante, ce qui convient même quand vous avez beaucoup de choix.

Comme les boutons radio, les select inputs possèdent aussi les paramètres choices et selected. De plus, ils disposent d’un argument multiple qui, lorsqu’il est défini à TRUE, permet à l’utilisateur de sélectionner plusieurs valeurs.

Le code de l’application Shiny du dernier exercice est fourni avec quelques légères modifications.

Cet exercice fait partie du cours

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

Afficher le cours

Instructions

  • Ajoutez un selectInput() à l’UI avec l’ID "continents" et l’étiquette "Continents", avec le continent par défaut défini sur "Europe".
    • Les choix de la liste doivent être tous les continents présents dans le jeu de données gapminder.
    • Autorisez l’utilisateur à sélectionner plusieurs continents simultanément.
  • Ajoutez du code côté serveur pour n’afficher que les données du ou des continents sélectionnés, en sous-échantillonnant le jeu de données gapminder (ligne 23).

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")),
      # Add a continent dropdown selector
      ___(___, ___,
                  choices = levels(___),
                  multiple = ___,
                  selected = ___)
    ),
    mainPanel(
      plotOutput("plot")
    )
  )
)

# Define the server logic
server <- function(input, output) {
  output$plot <- renderPlot({
    # Subset the gapminder dataset by the chosen continents
    data <- subset(gapminder,
                   ___ %in% ___$continents)

    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