Aan de slagBegin gratis

Structuur toevoegen aan je app

Lay-outs in Shiny worden gebruikt om je app structuur te geven door elementen op specifieke plekken te plaatsen.

Een zijbalklay-out, aangemaakt met de functie sidebarLayout(), biedt een eenvoudige tweekolomsindeling met een kleinere zijbalk links en een groter hoofdpaneel rechts.

De functie voor de zijbalklay-out neemt twee argumenten: sidebarPanel() en mainPanel(). Elk van deze panelen kan een willekeurige mix van tekst-/HTML-elementen bevatten, vergelijkbaar met hoe je deze elementen kunt combineren binnen een fluidPage().

Deze oefening maakt deel uit van de cursus

Casestudies: webapplicaties bouwen met Shiny in R

Bekijk cursus

Oefeninstructies

Je taak is om een zijbalklay-out toe te voegen aan de bestaande app, zodat de invoer links staat en de uitvoer in het hoofdpaneel. Concreet moet je het volgende doen:

  • Definieer de UI voor de Shiny-applicatie.
  • Voeg een zijbalklay-out toe aan de pagina.
  • Voeg een zijbalkpaneel toe aan de lay-out en plaats de invoer en tekst erin.
  • Voeg een hoofdpaneel toe aan de lay-out en plaats de grafiek en tabel erin.

Interactieve oefening met praktijkervaring

Probeer deze oefening door deze voorbeeldcode aan te vullen.

# 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)
Code bewerken en uitvoeren