Plotkan data
Ingat bahwa plot adalah objek output, sehingga ditambahkan ke aplikasi Shiny menggunakan fungsi plotOutput() + renderPlot(). Fungsi output ditambahkan ke UI untuk menentukan lokasi penempatan plot, dan fungsi render di kode server bertanggung jawab menghasilkan plot.
Tugas Anda adalah menambahkan plot PDB per kapita vs harapan hidup ke aplikasi. Data yang digunakan dalam plot harus sama dengan data yang ditampilkan di tabel; artinya, data di plot hanya boleh menampilkan rekaman yang sesuai dengan filter masukan. Kode di dalam renderPlot() tidak memiliki akses ke variabel apa pun yang didefinisikan di dalam renderTable(), sehingga Anda harus benar-benar menyalin dan menggunakan ulang kode yang sama. Nanti kita akan mempelajari cara menghindari duplikasi ini.
Latihan ini adalah bagian dari kursus
Studi Kasus: Membangun Aplikasi Web dengan Shiny di R
Petunjuk latihan
- Tambahkan placeholder untuk output plot ke UI dengan ID "plot".
- Di server, gunakan fungsi render yang sesuai untuk membuat plot (baris 30).
- Gunakan kembali kode pemfilteran data yang sama seperti yang digunakan tabel output untuk data plot (baris 32).
Latihan interaktif praktis
Cobalah latihan ini dengan menyelesaikan kode contoh berikut.
ui <- fluidPage(
h1("Gapminder"),
sliderInput(inputId = "life", label = "Life expectancy",
min = 0, max = 120,
value = c(30, 50)),
selectInput("continent", "Continent",
choices = c("All", levels(gapminder$continent))),
# Add a plot output
___(___),
tableOutput("table")
)
server <- function(input, output) {
output$table <- renderTable({
data <- gapminder
data <- subset(
data,
lifeExp >= input$life[1] & lifeExp <= input$life[2]
)
if (input$continent != "All") {
data <- subset(
data,
continent == input$continent
)
}
data
})
# Create the plot render function
output$plot <- ___({
# Use the same filtered data code that the table uses
data <- ___
___
___
ggplot(data, aes(gdpPercap, lifeExp)) +
geom_point() +
scale_x_log10()
})
}
shinyApp(ui, server)