shinydashboard pertamamu

Membangun Dashboard dengan shinydashboard

Png Kee Seng

Researcher

Sejauh ini

  • Wireframing di antarmuka pengguna (UI)
    • Header, sidebar, body
  • Definisikan output dan interaksinya dengan input pengguna
  • server menjalankan peran ini

gambar

header <- dashboardHeader(...)
sidebar <- dashboardSidebar(...)
body <- dashboardBody(...)

ui <- dashboardPage(header, sidebar, body)
server <- function(input, output) { ... }
shinyApp(ui, server)
Membangun Dashboard dengan shinydashboard

Server

  • Perlu mendefinisikan output dan input
  • Tentukan output, dan cara berinteraksi dengan input pengguna
  • Berguna membuat fungsi pembantu untuk mengurangi kekacauan dan meningkatkan keterbacaan
    • Letakkan fungsi pembantu di bagian atas kode

Server seperti pelayan yang menyampaikan instruksi ke dapur. Di shinyApp, server memberi tahu R bagaimana input berinteraksi dengan output.

Membangun Dashboard dengan shinydashboard

Menambahkan plot

  • Kembali ke dashboard turnamen sepak bola global
  • Tambahkan plot hexbin untuk tim 1
  • Lalu tempatkan plot ini di server
  • Bagaimana jika ingin plot yang sama untuk tim 2?
soccer %>%
  ggplot(aes(x=`1_passes_compeletd`, 
             y=`1_goal_prevented`)) +
  geom_hex(bins=10) + theme_classic()
server <- function(input, output){
  output$plot1 <- renderPlot({
  fifa %>%
    ggplot(aes(x=`1_passes_compeletd`, 
               y=`1_goal_prevented`)) +
    geom_hex(bins=10) + theme_classic()
  })
}
Membangun Dashboard dengan shinydashboard

Mendefinisikan objek ggplot di server

server <- function(input, output) {
  output$plot1 <- renderPlot({
    if (input$team == 1){

fifa %>% ggplot(aes(x=`1_passes_compeletd`, y=`1_goal_prevented`)) + geom_hex(bins=10) + theme_classic()
} else if (input$team == 2){
fifa %>% ggplot(aes(x=`2_passes_compeletd`, y=`2_goal_prevented`)) + geom_hex(bins=10) + theme_classic()
} }) }
Membangun Dashboard dengan shinydashboard

Menggunakan fungsi pembantu

plot_hex <- function(team){
  if (team == 1){
    soccer %>% ggplot(aes(x=`1_passes_compeletd`, 
                        y=`1_goal_prevented`)) +
      geom_hex(bins=10) + theme_classic()
  }
  else if (team == 2){
    soccer %>% ggplot(aes(x=`2_passes_compeletd`, 
                        y=`2_goal_prevented`)) +
      geom_hex(bins=10) + theme_classic()
  }
}
Membangun Dashboard dengan shinydashboard

Menggunakan fungsi pembantu

Dengan fungsi pembantu

server <- function(input, output) {
  output$plot1 <- renderPlot(plot_hex(input$team)) 
}
  • Bukankah ini lebih mudah dibaca?

Tanpa fungsi pembantu

server <- function(input, output) {
  output$plot1 <- renderPlot({
    if (input$team == 1){
      soccer %>% ggplot(aes(x=`1_passes_compeletd`, 
              y=`1_goal_prevented`)) +
        geom_hex(bins=10) + theme_classic()
      }
    else if (input$team == 2){
      soccer %>% ggplot(aes(x=`2_passes_compeletd`, 
              y=`2_goal_prevented`)) +
        geom_hex(bins=10) + theme_classic()
      }
    })
}
Membangun Dashboard dengan shinydashboard

Menggabungkan semuanya

# A complete shinydashboard

header <- dashboardHeader(title = "Turnamen sepak bola")
sidebar <- dashboardSidebar(sidebarMenu(menuItem("Umpan/gol", tabName = "passtab"), menuItem("Kosong", tabName = "emptytab")))
body <- dashboardBody(tabItems( tabItem("passtab", fluidRow(box(selectInput("team", "Nomor tim", choices = c(1,2))), box(plotOutput("plot1"))) ), tabItem("emptytab")) )
ui <- dashboardPage(header, sidebar, body)
server <- function(input, output) { output$plot1 <- renderPlot(plot_hex(input$team)) }
shinyApp(ui, server)
Membangun Dashboard dengan shinydashboard

Animasi yang menampilkan hasil render shinydashboard. Pengguna dapat berpindah halaman/tab dan memberi input untuk mendapatkan output berbeda.

Membangun Dashboard dengan shinydashboard

Ayo berlatih!

Membangun Dashboard dengan shinydashboard

Preparing Video For Download...