Mulai sekarangMulai gratis

shinydashboard pertama Anda dengan elemen interaktif

Anda telah melihat bagaimana elemen interaktif dapat ditambahkan dalam shinydashboard, dan juga bagaimana tabel data interaktif dapat ditambahkan.

Dalam latihan ini, listing Airbnb telah disimpan sebagai data frame bernama listings, dan peta geospasial telah disimpan sebagai objek leaflet bernama m_london. Header dan side bar telah disimpan sebagai header dan sidebar.

Fungsi pembantu khusus:

  • make_plots: Membuat box plot atau violin plot
  • num_listings: Menghitung jumlah listing berdasarkan rentang yang dipilih
  • num_private_rooms: Menghitung jumlah kamar privat sebagai persentase dari semua listing, berdasarkan rentang yang dipilih
  • median_price: Menghitung harga median berdasarkan rentang yang dipilih Untuk mengetahui lebih lanjut tentang suatu fungsi pembantu, Anda dapat menjalankannya (seperti make_plots) di konsol.

Latihan ini merupakan bagian dari kursus

Membangun Dashboard dengan shinydashboard

Lihat Kursus

Instruksi latihan

  • Tambahkan box plot/violin plot plotly bernama "plots".
  • Tambahkan tabel data bernama "table".
  • Tambahkan peta leaflet bernama "map".
  • Atur argumen yang benar dalam dashboardPage().

Latihan interaktif langsung praktik

Cobalah latihan ini dengan melengkapi kode contoh ini.

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)
Edit dan Jalankan Kode