ComenzarEmpieza gratis

Diseños con pestañas

Mostrar varias tablas y gráficos en la misma página puede generar ruido visual y distraer a quienes usan la app. En estos casos, el diseño con pestañas resulta muy útil, porque permite mostrar diferentes resultados como pestañas.

En este ejercicio, partiremos de la app de Shiny con diseño de barra lateral del ejercicio anterior y la modificaremos para usar pestañas. Este ejercicio también deja claro que Shiny facilita muchísimo cambiar el diseño de una app con solo unas pocas modificaciones en el código.

Tu app final debería verse así:

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

Este ejercicio forma parte del curso

Creación de aplicaciones web con Shiny en R

Ver curso

Instrucciones del ejercicio

  • Modifica el diseño de esta app para que el selector de nombres aparezca en la barra lateral y el gráfico y la tabla aparezcan como pestañas separadas a la derecha. ¡No te olvides de poner etiquetas a las pestañas!

Ejercicio interactivo práctico

Prueba este ejercicio y completa el código de muestra.

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)
Editar y ejecutar código