CommencezCommencez gratuitement

Tracer les données

Rappelez-vous que les graphiques sont des objets de sortie. Ils sont donc ajoutés à une application Shiny à l'aide des fonctions plotOutput() + renderPlot(). La fonction de sortie est ajoutée à l'UI pour déterminer l'emplacement du graphique, et la fonction de rendu dans le code du serveur est responsable de générer le graphique.

Votre tâche consiste à ajouter à l'application un graphique du PIB par habitant en fonction de l'espérance de vie. Les données utilisées dans le graphique doivent être les mêmes que celles affichées dans le tableau; autrement dit, le graphique doit uniquement montrer les enregistrements qui correspondent aux filtres d'entrée. Le code à l'intérieur de renderPlot() n'a pas accès aux variables définies dans renderTable(), vous devrez donc littéralement copier et réutiliser le même code. Plus tard, nous verrons comment éviter ce dédoublement.

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 à l'UI un espace réservé pour la sortie graphique avec l'identifiant « plot ».
  • Dans le serveur, utilisez la fonction de rendu appropriée pour créer le graphique (ligne 30).
  • Réutilisez le même code de filtrage des données que celui du tableau de sortie pour les données du graphique (ligne 32).

Exercice interactif pratique

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

ui <- fluidPage(
  h1("Gapminder"),
  sliderInput(inputId = "life", label = "Life expectancy",
              min = 0, max = 120,
              value = c(30, 50)),
  selectInput("continent", "Continent",
              choices = c("All", levels(gapminder$continent))),
  # Add a plot output
  ___(___),
  tableOutput("table")
)

server <- function(input, output) {
  output$table <- renderTable({
    data <- gapminder
    data <- subset(
      data,
      lifeExp >= input$life[1] & lifeExp <= input$life[2]
    )
    if (input$continent != "All") {
      data <- subset(
        data,
        continent == input$continent
      )
    }
    data
  })

  # Create the plot render function  
  output$plot <- ___({
    # Use the same filtered data code that the table uses
    data <- ___
            ___
            ___
    ggplot(data, aes(gdpPercap, lifeExp)) +
      geom_point() +
      scale_x_log10()
  })
}

shinyApp(ui, server)
Modifier et exécuter le code