Aan de slagBegin gratis

Pas de puntgrootte aan: numerieke invoer

Numerieke invoervelden hebben een paar extra argumenten die tekstinvoer niet heeft, zoals min en max, waarmee je de minimale en maximale waarden bepaalt die gekozen kunnen worden.

Let op: wanneer je in de servercode de waarde van een invoerveld opvraagt, weet Shiny welk type invoer is gebruikt en dus welk type object het moet teruggeven. Dit betekent dat als je een numerieke invoer met ID "foo" hebt, input$foo een numerieke waarde teruggeeft.

Deze oefening maakt deel uit van de cursus

Casestudies: webapplicaties bouwen met Shiny in R

Bekijk cursus

Oefeninstructies

De code voor de Shiny-app uit de vorige oefening is meegeleverd. Jij voegt een numeriek invoerveld toe waarmee de gebruiker de grootte van de punten in de plot kan aanpassen. Concreet:

  • Voeg in de UI een numeriek invoerveld toe met ID "size", het label "Point size", een standaardwaarde van 1 en een minimale waarde van 1.
  • Voeg code toe aan de server zodat de numerieke invoer de puntgrootte in de plot bepaalt (regel 20).

Interactieve oefening met praktijkervaring

Probeer deze oefening door deze voorbeeldcode aan te vullen.

# Define UI for the application
ui <- fluidPage(
  sidebarLayout(
    sidebarPanel(
      textInput("title", "Title", "GDP vs life exp"),
      # Add a size numeric input
      ___
    ),
    mainPanel(
      plotOutput("plot")
    )
  )
)

# Define the server logic
server <- function(input, output) {
  output$plot <- renderPlot({
    ggplot(gapminder, aes(gdpPercap, lifeExp)) +
      # Use the size input as the plot point size
      geom_point(size = ___) +
      scale_x_log10() +
      ggtitle(input$title)
  })
}

# Run the application
shinyApp(ui = ui, server = server)
Code bewerken en uitvoeren