Corpul

Crearea dashboardurilor cu shinydashboard

Png Kee Seng

Researcher

Prezentare generală

  • Partea principală a interfeței shinydashboard
  • De obicei, intrările și ieșirile sunt plasate aici
    • Sunt ca preparatele și comenzile dintr-un restaurant
    • Serverul facilitează comunicarea
  • Corpul este definit prin dashboardBody() și stocat convențional ca body
body <- dashboardBody(...)
Crearea dashboardurilor cu shinydashboard

Wireframing

  • Realizați wireframing
    • Stabiliți structura înainte de a adăuga conținut
  • Într-un shinydashboard, decideți mai întâi pozițiile obiectelor

Wireframe-ul unui zeppelin.

1 Brett Jordan, Flickr
Crearea dashboardurilor cu shinydashboard

Adăugarea rândurilor și casetelor: casete goale

  • Adăugați rânduri cu fluidRow()
  • Și adăugați casete cu box()

Tablou de bord cu două rânduri, fiecare cu două casete goale.

body <- dashboardBody(

fluidRow(
box("Row 1, box 1"), box("Row 1, box 2")
), fluidRow(
box("Row 2, box 1"), box("Row 2, box 2")
)
)
Crearea dashboardurilor cu shinydashboard

Adăugarea rândurilor și casetelor: conținut în casete

Corpul cu patru casete și conținut în unele casete.

body <- dashboardBody(
  fluidRow(box("Row 1, box 1", 

plotOutput('plot')),
box("Row 1, box 2")), fluidRow(box("Row 2, box 1"), box("Row 2, box 2",
selectInput("select", "Select team number:", choices = c(1,2))))
)
Crearea dashboardurilor cu shinydashboard

Prevenirea depășirii casetelor

  • Fiecare casetă ocupă implicit 6 din 12 unități orizontale
  • Pentru a evita depășirea, setați width
    • În exemplul nostru, setați lățimile la 3, 5 și 4
  • Adăugarea de box()-uri este foarte recomandată

Mai multe casete în corp

body <- dashboardBody(
  fluidRow(box("Row 1, box 1"), 
           box("Row 1, box 2"),
           box("Row 1, box 3")),
  fluidRow(box("Row 2, box 1"), 
           box("Row 2, box 2"))
)
body <- dashboardBody(
  fluidRow(box("Row 1, box 1", width = 3), 
           box("Row 1, box 2", width = 5),
           box("Row 1, box 3", width = 4)),
  fluidRow(box("Row 2, box 1"), 
           box("Row 2, box 2"))
)
Crearea dashboardurilor cu shinydashboard

valueBox și infoBox

  • Există și casete care afișează informații sumare
    • valueBox()
    • infoBox()

valueBox și infoBox în corp.

body <- dashboardBody(
  fluidRow(valueBox(value = 3, 
                    subtitle = "Total no. of red cards awarded", 
                    icon = icon("user"),
                    color = "red"),

infoBox(value = 158, title = "Total no. of goals scored", icon = icon("futbol")) ))
Crearea dashboardurilor cu shinydashboard

valueBoxOutput și infoBoxOutput

  • Variante ale valueBox() și infoBox(): valueBoxOutput() și infoBoxOutput()
  • Acestea sunt funcții de ieșire
  • Există și renderValueBox() și renderInfoBox()
  • valueBox() și infoBox() sunt necesare

valueBoxOutput și infoBoxOutput în corp. Shinydashboard-ul redat este identic cu cel anterior.

body <- dashboardBody(
  fluidRow(valueBoxOutput(outputId = "valuebox1"),
           infoBoxOutput(outputId = "infobox1")
           ))
server <- function(input, output){
  output$valuebox1 <- renderValueBox(
    valueBox(3, "Total no. of red cards awarded",
                icon = icon("user"), color = "red"))
  output$infobox1 <- renderInfoBox(
    infoBox(158, 
                   title = "Total no. of goals scored", 
                   icon = icon("futbol")))
}
Crearea dashboardurilor cu shinydashboard

Analogie între valueBoxOutput și plotOutput

  • plotOutput():
    • Plasat în UI
    • Determină poziția în shinydashboard
  • renderPlot():
    • Plasat în server()
    • Conține un obiect ggplot()
  • valueBoxOutput():
    • Plasat în UI
    • Determină poziția în shinydashboard
  • renderValueBox():
    • Plasat în server()
    • Conține un obiect valueBox()
Crearea dashboardurilor cu shinydashboard

Legarea barei laterale de corp

  • Anterior am avut o bară laterală cu două butoane: „charts" și „statistics"
  • Pentru a le lega de corp, adăugăm tabItems()
    • Fiecare pagină este definită de un tabItem()
    • Etichetele fiecărei perechi menuItem()-tabItem() trebuie să coincidă

Corpul și bara laterală sunt acum legate

sidebar <- dashboardSidebar(
  sidebarMenu(
    id = "pages",

menuItem("Many charts", tabName = "charts", icon = icon("chart-line"), badgeLabel = "New content!", badgeColor = "green"),
menuItem("Statistics", icon = icon("file-excel"), tabName = "statistics", badgeLabel = "urgent", badgeColor = "red") ))
body <- dashboardBody( tabItems(
tabItem("charts", "Charts go here." ), tabItem("statistics", "Statistics go here." )))
Crearea dashboardurilor cu shinydashboard

File în corp

  • Într-o aplicație Shiny, un set de file poate fi definit cu tabsetPanel()
    • Fiecare filă este definită de tabPanel()
  • Nu confundați cu tabItems() și tabItem()

Adăugarea seturilor de file în corp

body <- dashboardBody(tabsetPanel(

tabPanel("Distributions", box(plotOutput("dist"))), tabPanel("Statistics", dateInput("matchdate", "Enter the match date:", value = "2022-11-20"), valueBoxOutput("red"), valueBoxOutput("yellow")), tabPanel("Data", "Data goes here.", tableOutput("data"))
))
server <- function(input, output){ output$red <- renderValueBox(valueBox(0, "Red cards")) output$yellow <- renderValueBox(valueBox(6, "Yellow cards")) }
Crearea dashboardurilor cu shinydashboard

Să exersăm!

Crearea dashboardurilor cu shinydashboard

Preparing Video For Download...