Bắt đầu ngayBắt đầu miễn phí

Bố cục theo tab

Hiển thị nhiều bảng và biểu đồ trên cùng một trang có thể gây rối mắt và làm người dùng bị phân tâm. Trong những trường hợp như vậy, bố cục theo tab rất hữu ích vì cho phép hiển thị các đầu ra khác nhau dưới dạng các tab.

Trong bài tập này, bạn sẽ bắt đầu với ứng dụng Shiny dùng bố cục sidebar từ bài trước và chỉnh sửa để dùng các tab. Bài tập này cũng cho thấy Shiny giúp bạn đổi bố cục ứng dụng rất dễ dàng chỉ với vài thay đổi nhỏ trong mã.

Ứng dụng cuối cùng của bạn sẽ trông như sau:

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

Bài tập này là một phần của khóa học

Xây dựng ứng dụng web với Shiny trong R

Xem khóa học

Hướng dẫn bài tập

  • Chỉnh sửa bố cục của ứng dụng để bộ chọn tên xuất hiện ở thanh bên và biểu đồ cùng bảng xuất hiện dưới dạng hai tab riêng ở phía bên phải. Đừng quên gắn nhãn cho các tab!

Bài tập tương tác thực hành trực tiếp

Hãy thử làm bài tập này bằng cách hoàn thành đoạn mã mẫu này.

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)
Chỉnh sửa và Chạy Mã