Votre premier shinydashboard avec des éléments interactifs
Vous avez vu comment ajouter des éléments interactifs dans un shinydashboard, ainsi que des tableaux de données interactifs.
Dans cet exercice, les inscriptions Airbnb ont été enregistrées dans une trame de données appelée listings, et la carte géospatiale a été enregistrée comme objet leaflet appelé m_london. L'en-tête et la barre latérale ont été enregistrés sous header et sidebar.
Fonctions utilitaires personnalisées :
make_plots: trace des diagrammes à moustaches (box plots) ou des violons (violin plots)num_listings: calcule le nombre d'inscriptions, selon l'intervalle sélectionnénum_private_rooms: calcule le nombre de chambres privées en pourcentage de toutes les inscriptions, selon l'intervalle sélectionnémedian_price: calcule le prix médian, selon l'intervalle sélectionné Pour en savoir plus sur une fonction utilitaire, vous pouvez l'exécuter (commemake_plots) dans la console.
Cette activité fait partie du cours
Créer des tableaux de bord avec shinydashboard
Instructions de l’exercice
- Ajoutez des diagrammes à moustaches/violons
plotlyappelés"plots". - Ajoutez un tableau de données appelé
"table". - Ajoutez une carte
leafletappelée"map". - Définissez les bons arguments dans
dashboardPage().
Exercice interactif pratique
Essayez cet exercice en complétant ce code d’exemple.
body <- dashboardBody(
tabItems(
tabItem(tabName = "charts",
fluidRow(
valueBoxOutput(outputId = "count"), valueBoxOutput(outputId = "prop"),valueBoxOutput(outputId = "med") ),
fluidRow(
tabBox(side = "left", id = "tabset", height = "500px",
tabPanel("Charts",
# Place plotly object here
fluidRow(box(___("plots", height = 500, width = 600)) ) ),
# Place dataTable object here
tabPanel("Data table", height = "500px", ___("table")) ),
box(side = "right", height = "200px", title = "Welcome to London!",),
box(side = "right", height = "385px", title = "Controls",
sliderInput(inputId = "range", label = "Select price range:",
min = 0, max = 25000,value = c(0,2500)),
selectInput(inputId = "select", label = "Select group:",
choices = c("Box plots", "Violin plots")) ) ) ),
tabItem(tabName = "map",
# Place leaflet object here
fluidRow(box(title = "Map of listings in London", ___("map", height = 600, width = 700))) ) ) )
# Set the correct arguments for dashboardPage()
ui <- dashboardPage(___, ___, ___)
server <- function(input, output) {
output$count <- renderValueBox(valueBox("Number of listings", num_listings(input$range),
icon = icon("house-user") ))
output$prop <- renderValueBox(valueBox("Private rooms", paste0(num_private_rooms(input$range), "% of all listings"),
icon = icon("eye"), color = "orange") )
output$med <- renderValueBox(valueBox("Median price", paste0(median_price(input$range), "£"),
icon = icon("money-bill-alt"), color = "olive") )
output$plots <- renderPlotly(make_plots(input$range, input$select))
output$table <- renderDataTable(filter(listings, price >= input$range[1], price <= input$range[2]) %>% select(c(name, neighbourhood, room_type, price)),
options = list(lengthMenu = c(5, 30, 50)))
output$map <- renderLeaflet(m_london)
}
shinyApp(ui, server)