Placer différents résultats sur différents onglets
Les onglets sont pratiques lorsque vous avez trop de contenu et que vous souhaitez le répartir. Pour créer un onglet, il suffit d'englober des éléments d'interface dans la fonction tabPanel(), et de fournir un titre à l'onglet à l'aide de l'argument title.
Pour que les onglets apparaissent dans l'interface, les panneaux d'onglets doivent être regroupés dans un « contenant » d'onglets, en enveloppant tous les panneaux avec tabsetPanel().
Votre tâche consiste à ajouter des onglets à l'application Shiny, de sorte que les contrôles et le bouton de téléchargement soient dans un onglet, le graphique dans un autre, et le tableau dans un troisième. Comme il s'agit uniquement d'un changement visuel, toutes les modifications de code doivent être faites uniquement dans la partie UI.
Cette activité fait partie du cours
Études de cas : créer des applications Web avec Shiny en R
Instructions de l’exercice
- Utilisez la fonction
tabsetPanel()pour créer un contenant pour trois panneaux d'onglets :- Un premier onglet pour les contrôles, et nommez l'onglet « Inputs ».
- Un deuxième onglet qui affiche le graphique, et nommez l'onglet « Plot » (ligne 16).
- Un troisième onglet qui affiche le tableau, et nommez l'onglet « Table » (ligne 21).
Exercice interactif pratique
Essayez cet exercice en complétant ce code d’exemple.
ui <- fluidPage(
h1("Gapminder"),
# Create a container for tab panels
___(
# Create an "Inputs" tab
tabPanel(
title = ___,
sliderInput(inputId = "life", label = "Life expectancy",
min = 0, max = 120,
value = c(30, 50)),
selectInput("continent", "Continent",
choices = c("All", levels(gapminder$continent))),
downloadButton("download_data")
),
# Create a "Plot" tab
___(
title = "Plot",
plotOutput("plot")
),
# Create "Table" tab
___(
title = ___,
DT::dataTableOutput("table")
)
)
)
server <- function(input, output) {
filtered_data <- reactive({
data <- gapminder
data <- subset(
data,
lifeExp >= input$life[1] & lifeExp <= input$life[2]
)
if (input$continent != "All") {
data <- subset(
data,
continent == input$continent
)
}
data
})
output$table <- DT::renderDataTable({
data <- filtered_data()
data
})
output$download_data <- downloadHandler(
filename = "gapminder_data.csv",
content = function(file) {
data <- filtered_data()
write.csv(data, file, row.names = FALSE)
}
)
output$plot <- renderPlot({
data <- filtered_data()
ggplot(data, aes(gdpPercap, lifeExp)) +
geom_point() +
scale_x_log10()
})
}
shinyApp(ui, server)