CommencerCommencer gratuitement

Tracer les données

Rappelez-vous que les graphiques sont des objets de sortie ; on les ajoute donc à une application Shiny en utilisant les fonctions plotOutput() + renderPlot(). La fonction de sortie est ajoutée à l’UI pour indiquer où placer le graphique, et la fonction de rendu dans le serveur est chargée 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 pour le graphique doivent être les mêmes que celles affichées dans le tableau ; autrement dit, le graphique ne doit montrer que les enregistrements qui correspondent aux filtres saisis. 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 cette duplication.

Cet exercice fait partie du cours

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

Afficher le cours

Instructions

  • Ajoutez à l’UI un emplacement réservé pour une sortie de graphique avec l’ID "plot".
  • Dans le serveur, utilisez la fonction de rendu appropriée pour créer le graphique (ligne 30).
  • Réutilisez pour les données du graphique le même code de filtrage que celui utilisé par le tableau de sortie (ligne 32).

Exercice interactif pratique

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

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