Treść

Tworzenie dashboardów z shinydashboard

Png Kee Seng

Researcher

Przegląd

  • Główna część interfejsu shinydashboard
  • Zwykle umieszczane są tu dane wejściowe i wyjściowe
    • Można je porównać do dań i zamówień w restauracji
    • Serwer obsługuje komunikację
  • Treść jest definiowana przez dashboardBody() i przechowywana jako body
body <- dashboardBody(...)
Tworzenie dashboardów z shinydashboard

Makietowanie

  • Wykonaj makietowanie (wireframing)
    • Najpierw zdefiniuj strukturę, potem dodaj zawartość
  • W shinydashboard zacznij od ustalenia pozycji obiektów

Szkielet sterowca.

1 Brett Jordan, Flickr
Tworzenie dashboardów z shinydashboard

Dodawanie wierszy i pól: puste pola

  • Dodaj wiersze za pomocą fluidRow()
  • Dodaj pola za pomocą box()

Pulpit z dwoma wierszami, każdy z dwoma pustymi polami.

body <- dashboardBody(

fluidRow(
box("Row 1, box 1"), box("Row 1, box 2")
), fluidRow(
box("Row 2, box 1"), box("Row 2, box 2")
)
)
Tworzenie dashboardów z shinydashboard

Dodawanie wierszy i pól: zawartość pól

Treść z czterema polami, niektóre wypełnione.

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))))
)
Tworzenie dashboardów z shinydashboard

Zapobieganie przepełnieniu pól

  • Domyślnie każde pole zajmuje 6 z 12 jednostek poziomych
  • Aby zapobiec przepełnieniu, ustaw width
    • W naszym przykładzie: szerokości 3, 5 i 4
  • Używanie box() jest wysoce zalecane

Więcej pól w treści

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"))
)
Tworzenie dashboardów z shinydashboard

valueBox i infoBox

  • Istnieją też pola wyświetlające małe ilości informacji
    • valueBox()
    • infoBox()

valueBox i infoBox w treści.

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")) ))
Tworzenie dashboardów z shinydashboard

valueBoxOutput i infoBoxOutput

  • Warianty valueBox() i infoBox(): valueBoxOutput() i infoBoxOutput()
  • Są to funkcje wyjściowe
  • Dostępne są też renderValueBox() i renderInfoBox()
  • valueBox() i infoBox() są wymagane

valueBoxOutput i infoBoxOutput w treści. Wyrenderowany shinydashboard jest identyczny jak poprzedni.

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")))
}
Tworzenie dashboardów z shinydashboard

Analogia między valueBoxOutput a plotOutput

  • plotOutput():
    • Umieszczane w UI
    • Określa pozycję w shinydashboard
  • renderPlot():
    • Umieszczane w server()
    • Zawiera obiekt ggplot()
  • valueBoxOutput():
    • Umieszczane w UI
    • Określa pozycję w shinydashboard
  • renderValueBox():
    • Umieszczane w server()
    • Zawiera obiekt valueBox()
Tworzenie dashboardów z shinydashboard

Łączenie paska bocznego z treścią

  • Wcześniej pasek boczny zawierał dwa przyciski: „charts" i „statistics"
  • Aby połączyć je z treścią, należy dodać tabItems()
    • Każda strona jest definiowana przez tabItem()
    • Etykiety par menuItem()-tabItem() muszą być zgodne

Treść i pasek boczny są teraz połączone

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." )))
Tworzenie dashboardów z shinydashboard

Zakładki w treści

  • W shinyApp zestaw zakładek można zdefiniować za pomocą tabsetPanel()
    • Każda zakładka jest definiowana przez tabPanel()
  • Nie należy mylić z tabItems() i tabItem()

Dodawanie zestawów zakładek w treści

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")) }
Tworzenie dashboardów z shinydashboard

Ćwiczmy!

Tworzenie dashboardów z shinydashboard

Preparing Video For Download...