CommencezCommencez gratuitement

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 (comme make_plots) dans la console.

Cette activité fait partie du cours

Créer des tableaux de bord avec shinydashboard

Voir le cours

Instructions de l’exercice

  • Ajoutez des diagrammes à moustaches/violons plotly appelés "plots".
  • Ajoutez un tableau de données appelé "table".
  • Ajoutez une carte leaflet appelé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)
Modifier et exécuter le code