MulaiMulai sekarang secara gratis

Tata letak tab

Menampilkan beberapa tabel dan plot pada halaman yang sama dapat menimbulkan kekacauan visual dan mengganggu pengguna aplikasi. Dalam kasus seperti ini, tata letak tab sangat berguna karena memungkinkan berbagai keluaran ditampilkan sebagai tab.

Pada latihan ini, kita akan memulai dengan aplikasi Shiny yang menggunakan tata letak sidebar dari latihan sebelumnya dan memodifikasinya untuk menggunakan tab. Latihan ini juga akan memperjelas bahwa Shiny memudahkan Anda mengganti tata letak aplikasi hanya dengan beberapa modifikasi kode.

Aplikasi akhir Anda seharusnya terlihat seperti ini:

An app where the name selector appears in the left sidebar, while the graph and table appear as tabs on the right in the main panel

Latihan ini adalah bagian dari kursus

Membangun Aplikasi Web dengan Shiny di R

Lihat Kursus

Petunjuk latihan

  • Ubah tata letak aplikasi ini agar pemilih nama muncul di sidebar dan plot serta tabel muncul sebagai tab terpisah di sebelah kanan. Jangan lupa memberi label pada tab!

Latihan interaktif praktis

Cobalah latihan ini dengan menyelesaikan kode contoh berikut.

ui <- fluidPage(
  sidebarLayout(
    sidebarPanel(
      selectInput('name', 'Select Name', top_trendy_names$name)
    ),
    mainPanel(
      # MODIFY CODE BLOCK BELOW: Wrap in a tabsetPanel
        # MODIFY CODE BELOW: Wrap in a tabPanel providing an appropriate label
        plotly::plotlyOutput('plot_trendy_names'),
        # MODIFY CODE BELOW: Wrap in a tabPanel providing an appropriate label
        DT::DTOutput('table_trendy_names')
    )
  )
)

server <- function(input, output, session){
  # Function to plot trends in a name
  plot_trends <- function(){
     babynames %>% 
      filter(name == input$name) %>% 
      ggplot(aes(x = year, y = n)) +
      geom_col()
  }
  output$plot_trendy_names <- plotly::renderPlotly({
    plot_trends()
  })
  
  output$table_trendy_names <- DT::renderDT({
    babynames %>% 
      filter(name == input$name)
  })
}

shinyApp(ui = ui, server = server)
Edit dan Jalankan Kode