IniziaInizia gratis

Aggiungere struttura alla tua app

I layout in Shiny servono a dare una struttura alla tua app, posizionando gli elementi nei punti desiderati.

Un layout con barra laterale, creato con la funzione sidebarLayout(), fornisce una semplice struttura a due colonne, con una barra laterale più piccola a sinistra e un pannello principale più grande a destra.

La funzione del layout con barra laterale accetta due argomenti: sidebarPanel() e mainPanel(). Ciascuno di questi pannelli può contenere qualsiasi combinazione di elementi di testo/HTML, in modo analogo a come puoi mescolare questi elementi all'interno di fluidPage().

Questo esercizio fa parte del corso

Casi di studio: creare applicazioni web con Shiny in R

Visualizza il corso

Istruzioni dell'esercizio

Il tuo compito è aggiungere un layout con barra laterale all'app esistente, in modo che gli input siano sulla sinistra e i risultati siano nel pannello principale. In particolare, devi:

  • Definire la UI dell'applicazione Shiny.
  • Aggiungere un layout con barra laterale alla pagina.
  • Aggiungere un pannello laterale al layout e inserirvi input e testo.
  • Aggiungere un pannello principale al layout e inserirvi il grafico e la tabella.

Esercizio pratico interattivo

Prova a risolvere questo esercizio completando il codice di esempio.

# Load the shiny package
library(shiny)

# Define UI for the application
ui <- ___(
  # Add a sidebar layout to the application
  ___(
    # Add a sidebar panel around the text and inputs
    ___(
      h4("Plot parameters"),
      textInput("title", "Plot title", "Car speed vs distance to stop"),
      numericInput("num", "Number of cars to show", 30, 1, nrow(cars)),
      sliderInput("size", "Point size", 1, 5, 2, 0.5)
    ),
    # Add a main panel around the plot and table
    ___(
      plotOutput("plot"),
      tableOutput("table")
    )
  )
)

# Define the server logic
server <- function(input, output) {
  output$plot <- renderPlot({
    plot(cars[1:input$num, ], main = input$title, cex = input$size)
  })
  output$table <- renderTable({
    cars[1:input$num, ]
  })
}

# Run the application
shinyApp(ui = ui, server = server)
Modifica ed esegui il codice