Tugas Akhir
Penjelasan
Saatnya menggabungkan semua konsep — input widgets, reactivity, reactive expression, renderPlot dengan ggplot2, dan tabel dengan DT — menjadi satu dashboard interaktif utuh. Dashboard ini akan memakai dataset mtcars (bawaan R), memungkinkan user memfilter data lewat slider dan dropdown, menampilkan hasilnya sebagai grafik yang otomatis update, dan menampilkan tabel data yang sudah difilter di bawahnya. Ini adalah pola paling umum dari aplikasi Shiny di dunia nyata: filter interaktif di satu sisi, visualisasi yang bereaksi terhadap filter itu di sisi lain.
Tugas
Buat dashboard mtcars dengan sidebarLayout. Di sidebarPanel, sediakan sliderInput 'mpg_range' (rentang mpg, min sampai max dari mtcars$mpg) dan selectInput 'silinder' dengan pilihan semua nilai unik mtcars$cyl ditambah opsi 'Semua'. Di mainPanel, buat reactive expression 'data_terfilter' yang menyaring mtcars berdasar kedua input tersebut (kalau silinder == 'Semua', jangan filter kolom cyl). Tampilkan plotOutput dengan scatter plot wt vs mpg dari data_terfilter(), dan DTOutput yang menampilkan data_terfilter() sebagai tabel. Tambahkan juga textOutput yang menampilkan jumlah baris data setelah difilter.
Ketik/edit bebas di sini untuk latihan — kode ini tidak dijalankan.
Tips
Bangun bertahap: pastikan reactive data_terfilter() bekerja benar dulu (cek lewat tabel), baru sambungkan ke plot. Kalau plot atau tabel kosong padahal filter sudah benar, cek dulu apakah reactive expression dipanggil dengan kurung — data_terfilter() bukan data_terfilter, kesalahan ini paling sering bikin dashboard terasa 'diam' tanpa pesan error yang jelas.