Elemente interactive într-un shinydashboard

Crearea dashboardurilor cu shinydashboard

Png Kee Seng

Researcher

Scenariu

  • Lucrăm pentru o agenție de turism din Londra.

  • Turiștii au nevoie de cazare.

  • Cum îi putem ajuta?

O reprezentare grafică a Londrei

  • Numărul de anunțuri dintr-un interval de prețuri
  • Proporția camerelor private
  • Prețurile medii
  • Câteva grafice
  • Un tabel de date
  • O hartă a Londrei
1 Image by Freepik
Crearea dashboardurilor cu shinydashboard

Schița dashboardului

Un schițe aproximativă a dashboardului.

Crearea dashboardurilor cu shinydashboard

Construirea dashboardului: Configurarea structurii de bază

Realizarea wireframingului prin configurarea unui shinydashboard gol cu titlul și butoanele din bara laterală dorite.

header <- dashboardHeader(
  title = "Home rental listings")
sidebar <- dashboardSidebar()
body <- dashboardBody()
ui <- dashboardPage(header, 
                    sidebar, 
                    body)
server <- function(input, output) {}
shinyApp(ui, server)
Crearea dashboardurilor cu shinydashboard

Construirea dashboardului: Adăugarea ValueBox

Adăugarea valueboxes în cadrul wireframingului.

În body:

fluidRow(
    valueBoxOutput(outputId = "count"),
    valueBoxOutput(outputId = "prop"),
    valueBoxOutput(outputId = "avg"))

În server:

output$count <- renderValueBox({
    valueBox(..., icon = ...)})
output$prop <- renderValueBox(...)
...
Crearea dashboardurilor cu shinydashboard

Construirea dashboardului: Adăugarea controalelor

Adăugarea intrărilor — controale pentru utilizatori.

În body:

box(
    side = "right", ...,
    sliderInput(inputId = "range",
        label = "Select price range:",
        min = 0,
        max = 25000,
        value = c(0,25000))
        ))

Actualizați server, folosind input$range[1] și input$range[2]

Crearea dashboardurilor cu shinydashboard

Construirea dashboardului: Adăugarea graficelor interactive

Adăugarea graficelor interactive cu plotly.

În body:

plotlyOutput("plots", 
    height = 500, 
    width = 600)

În server:

output$plots <- renderPlotly({
      ...
  })
Crearea dashboardurilor cu shinydashboard

Construirea dashboardului: Adăugarea unui al doilea grafic

Adăugarea unui al doilea grafic pe aceeași pagină, accesibil printr-un meniu dropdown.

În body:

selectInput(inputId = "select", 
    label = "Select group:", 
    choices = c("Neighbourhood", 
            "Room Type"))

În server:

output$plots <- renderPlotly({
    if (input$select == ...){plot1}
    else if(input$select == ...){plot2}
  })
Crearea dashboardurilor cu shinydashboard

Construirea dashboardului: Adăugarea unei descrieri și a filelor

Adăugarea unui text explicativ pentru acest dashboard.

În body:

box(side = "right", ...,
    title = "Welcome to London!", 
    "...")

Actualizare în body:

tabBox(id = "tabset", ...,
    tabPanel("Charts", ...),
    tabPanel("Data table", ...)
Crearea dashboardurilor cu shinydashboard

Construirea dashboardului: Adăugarea tabelelor interactive

Adăugarea tabelelor interactive cu funcții dataTable.

Putem folosi funcțiile shiny.

În body:

dataTableOutput("table")

În server:

output$table <- 
    renderDataTable(listings)
Crearea dashboardurilor cu shinydashboard

Construirea dashboardului: Adăugarea unei hărți interactive

Adăugarea unei hărți leaflet în dashboard.

În sidebar:

sidebarMenu(
    menuItem("Charts", ...),
    menuItem("Map", ...))

În body:

leafletOutput("map",...)

În server:

output$map <- renderLeaflet(map)
Crearea dashboardurilor cu shinydashboard

Să exersăm!

Crearea dashboardurilor cu shinydashboard

Preparing Video For Download...