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 plotnum_listings: Menghitung jumlah listing berdasarkan rentang yang dipilihnum_private_rooms: Menghitung jumlah kamar privat sebagai persentase dari semua listing, berdasarkan rentang yang dipilihmedian_price: Menghitung harga median berdasarkan rentang yang dipilih Untuk mengetahui lebih lanjut tentang suatu fungsi pembantu, Anda dapat menjalankannya (sepertimake_plots) di konsol.
Latihan ini merupakan bagian dari kursus
Membangun Dashboard dengan shinydashboard
Instruksi latihan
- Tambahkan box plot/violin plot
plotlybernama"plots". - Tambahkan tabel data bernama
"table". - Tambahkan peta
leafletbernama"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)