Render Plot dengan ggplot2
Penjelasan
Kombinasi Shiny dengan ggplot2 adalah salah satu alasan utama Shiny populer di kalangan data analyst R. Cukup bungkus kode ggplot() biasa di dalam renderPlot({...}), dan pasangkan dengan plotOutput("id") di UI. Karena berada di dalam reactive context, kamu bisa memakai input$x langsung di dalam pemanggilan ggplot() — misalnya memfilter data berdasarkan slider, atau mengubah variabel yang di-plot berdasarkan selectInput. Setiap kali input yang relevan berubah, grafik otomatis di-render ulang tanpa kode tambahan apapun.
Contoh Konsep
library(shiny)
library(ggplot2)
ui <- fluidPage(
sliderInput("bins", "Jumlah bin:", min = 5, max = 50, value = 20),
plotOutput("histogram")
)
server <- function(input, output) {
output$histogram <- renderPlot({
ggplot(mtcars, aes(x = mpg)) +
geom_histogram(bins = input$bins, fill = "steelblue") +
labs(title = "Distribusi MPG", x = "Miles per Gallon")
})
}
shinyApp(ui = ui, server = server)
Praktikum
Lengkapi renderPlot agar membuat scatter plot mtcars antara wt (sumbu x) dan mpg (sumbu y), dengan warna titik dari input 'warna'.
Ketik/edit bebas di sini untuk latihan — kode ini tidak dijalankan.
Tips
Untuk grafik yang berat dihitung (misalnya dari dataset besar), pisahkan pemrosesan data ke dalam reactive() terpisah dari renderPlot() — supaya data hanya dihitung ulang saat input yang relevan berubah, bukan setiap kali plot digambar ulang.