Ajouter un filtre d'années : curseur numérique
Les curseurs peuvent servir à des fins semblables aux champs numériques, puisqu'ils offrent tous deux un moyen pour l'utilisateur de sélectionner un nombre.
Si la valeur initiale fournie (l'argument value) du curseur est un seul nombre, alors le curseur servira à sélectionner des nombres uniques. Toutefois, si la valeur initiale est un vecteur de deux nombres, le curseur servira à sélectionner deux nombres plutôt qu'une seule valeur.
Nous avons déjà vu que différents champs de saisie peuvent avoir des arguments différents. Il peut être difficile de se rappeler exactement quels arguments chaque champ accepte. La meilleure façon de connaître les arguments offerts par une fonction de saisie donnée est de consulter sa documentation ou son fichier d'aide.
Cette activité fait partie du cours
Études de cas : créer des applications Web avec Shiny en R
Instructions de l’exercice
- Ajoutez un
sliderInput()à l'interface avec l'ID « years » et l'étiquette « Years » (ligne 14).- Définissez la valeur minimale à l'année la plus ancienne de l'ensemble de données et la valeur maximale à l'année la plus récente.
- Par défaut, les bornes du curseur doivent être fixées à 1977 et 2002, afin que seules les données entre ces deux années (inclusivement) soient affichées.
- Ajoutez du code au serveur pour que les années choisies dans l'entrée servent à filtrer les données
gapminder, et que seuls les enregistrements compris dans ces années s'affichent (ligne 28).
Exercice interactif pratique
Essayez cet exercice en complétant ce code d’exemple.
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")),
selectInput("continents", "Continents",
choices = levels(gapminder$continent),
multiple = TRUE,
selected = "Europe"),
# Add a slider selector for years to filter
___("years", ___, ___, ___, ___)
),
mainPanel(
plotOutput("plot")
)
)
)
# Define the server logic
server <- function(input, output) {
output$plot <- renderPlot({
# Subset the gapminder data by the chosen years
data <- subset(gapminder,
continent %in% input$continents &
year >= ___$years[1] & year <= ___$years[2])
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)