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
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)