knitr::opts_chunk$set(
  message = FALSE, 
  warning = FALSE,
  collapse = TRUE,
  comment = "#>"
)

Dalam modul ini Anda akan belajar bagaimana cara membuat aplikasi web sederhana untuk visualisasi data.

Modul ini sedikit berbeda dengan modul-modul sebelumnya yang telah Anda kerjakan. Kali ini kita akan menggunakan dokumen R Markdown sebagai sandbox untuk mengembangkan aplikasi web sederhana. Apakah Anda tertarik?

Aplikasi web seperti apa yang akan kita buat? Kita akan membuat aplikasi web sederhana untuk menampilkan grafik kualitas udara di Kota Bandung selama periode tertentu. Sekarang coba Anda jalankan devtools::load_all() pada konsol RStudio, jangan jalankan pada R Markdown ini! (Petunjuk: Anda juga dapat melakukannya dengan cara menjalankan kombinasi kibor "Ctrl + Shift + L")

Apabila Anda telah sukses melakukannya tanpa adanya pesan galat, maka selanjutnya silakan jalankan fungsi run_aq() pada konsol RStudio. Ingat, jangan menjalankannya pada dokumen R Markdown ini! Apakah yang akan terjadi?

Pada pelatihan ini kita akan mencoba membuat ulang dan memodifikasi aplikasi web tersebut dengan menggunakan dokumen R Markdown sebagai sandbox. Kita akan memerlukan empat chunk untuk menuliskankan kode. Masing-masing chunk tersebut akan kita beri nama sebagai "global", "ui", "server", dan "run-app". Perhatikanlah contoh cara untuk mengatur hal tersebut pada chunk pertama!

global

Pada chunk pertama ini Anda diminta untuk mengaktifkan paket-paket yang diperlukan sehingga aplikasi web dapat berjalan dengan baik. Paket yang kita perlukan adalah shiny, here, vroom, dplyr, dan ggplot2, dan plotly. Selain itu, Anda juga diminta untuk mengimpor berkas "udara_bandung.csv" yang berada dalam subdirektori "data-raw" sebagai obyek R bernama udara_bandung. udara_bandung akan menjadi obyek global yang nanti akan dipergunakan oleh aplikasi web. Selanjutnya kita akan membuat dua obyek global lain yaitu option_station dan option_parameter.

___
___
___
___
___
___

___ <- vroom(here("data-raw", "___"))
option_station <- unique(udara_bandung[["station"]])
___ <- colnames(udara_bandung)[-c(1, 2)]

ui

Berikutnya kita akan menuliskan kode antarmuka (front-end/user interface) pada chunk ini. Terdapat berbagai jenis tata letak laman antarmuka yang disediakan oleh paket shiny maupun oleh paket tambahan lainnya. Dalam kasus ini kita akan menggunakan fluidPage() dan sidebarLayout() untuk mengatur tata letak laman aplikasi web. Berilah judul yang sesuai pada headerPanel(). Selanjutnya tambahkanlah satu selectInput() dengan argumen inputId = "parameter", label = "Parameter", dan choices = option_parameter. Dapatkah Anda membuat satu textInput() tambahan yang berfungsi untuk mengatur judul pada grafik? Serta tambahkan plotlyOutput() pada mainPanel() dengan outputId = "aq_plot" sebagai argumen!

ui <- fluidPage(
  title = "Air Quality | R Academy Telkom University",
  headerPanel("___"),
  sidebarLayout(
    sidebarPanel(
      selectInput(inputId = "station",
                  label =  "Station",
                  choices = option_station,
                  multiple = TRUE,
                  selected = option_station[[1]]),
      ___
      textInput(inputId = "parameter_label",
                label = "Label for parameter",
                value = ""),
      ___
    ),
    mainPanel(
      plotlyOutput(outputId = "aq_plot")
    )
  )
)

server

Selanjutnya kita perlu menuliskan kode logika aplikasi yang dieksekusi oleh aplikasi web untuk melakukan pemrosesan data. Chunk ketiga ini merupakan tempat Anda untuk mengembangkan back-end aplikasi web. Disini Anda harus membuat obyek R berupa fungsi dengan tiga argumen, yaitu: input, output, dan session. Kemudian di dalam badan fungsi tersebut Anda akan menempatkan seluruh kode pemrosesan data. Anda akan menggunakan input yang telah dituliskan pada bagian ui sebagai "bahan baku" dan kemudian menampilkan hasilnya pada output. Konten input dapat Anda akses di input$inputId, sedangkan komponen output dapat Anda simpan ke output$outputId. Pastikan semua Id tersebut sama dengan apa yang terdapat di ui! Lengkapilah chunk berikut:

server <- function(input, output, session) {
  aq_plot <- reactive({
    udara_bandung %>%
      filter(station %in% input$station) %>%
      ggplot(aes_string(x = "day", y = ___, colour = "station")) +
      geom____ +
      scale_x_date(date_breaks = "2 weeks") +
      labs(
        x = "",
        y = ifelse(input$parameter_label == "", input$parameter, input$parameter_label),
        colour = "Station",
        title = input$___
      ) +
      theme_light()
  })

  output$___ <- renderPlotly({
    ggplotly(aq_plot())
  })
}

run-app

Akhirnya Anda selesai menuliskan komponen global, ui, dan server. Sekarang saatnya Anda mencoba aplikasi web yang telah Anda kembangkan! Jalankanlah baris kode pada chunk berikut:

shinyApp(ui = ui, server = server, options = list(height = "500px"))

Selamat Anda telah menyelesaikan modul 7! Silakan jalankan "Ctrl + Shift + K" atau klik tombol "Knit" untuk membuat dokumen final.



vynspermadi/tidyds documentation built on Nov. 5, 2019, 12:06 p.m.