MulaiMulai sekarang secara gratis

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

Lihat Kursus

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)
Edit dan Jalankan Kode