Zacznij terazZacznij za darmo

Układy z zakładkami

Wyświetlanie wielu tabel i wykresów na tej samej stronie może prowadzić do wizualnego bałaganu i rozpraszać użytkowników aplikacji. W takich przypadkach przydaje się układ z zakładkami – pozwala on na prezentowanie różnych wyników w osobnych kartach.

W tym ćwiczeniu zaczniemy od aplikacji Shiny z układem bocznego panelu z poprzedniego ćwiczenia i zmodyfikujemy ją tak, aby korzystała z zakładek. To ćwiczenie pokaże też wyraźnie, jak łatwo w Shiny można zmieniać układ aplikacji – wystarczy kilka drobnych modyfikacji kodu.

Gotowa aplikacja powinna wyglądać tak:

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

To ćwiczenie jest częścią kursu

Tworzenie aplikacji internetowych z Shiny w R

Zobacz kurs

Instrukcje do ćwiczenia

  • Zmodyfikuj układ aplikacji tak, aby selektor imion znajdował się w panelu bocznym, a wykres i tabela były wyświetlane jako osobne zakładki po prawej stronie. Nie zapomnij dodać etykiet do zakładek!

Interaktywne ćwiczenie praktyczne

Spróbuj tego ćwiczenia, uzupełniając ten przykładowy kod.

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)
Edytuj i uruchom kod