Aan de slagBegin gratis

Je plot groter maken

Net zoals invoerfuncties verschillende argumenten kunnen hebben afhankelijk van het type input, kunnen ook uitvoer-placeholderfuncties verschillende argumenten hebben om hun uiterlijk of gedrag aan te passen.

Wanneer je bijvoorbeeld een plot toont in een Shiny-app met plotOutput(), is de hoogte van de plot standaard 400 pixels. De functie plotOutput() heeft parameters waarmee je de hoogte of breedte van een plot kunt aanpassen.

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 meegegeven. Jouw taak is om de plot groter te maken. Specifiek:

  • 600 pixels hoog en 600 pixels breed. Raadpleeg de documentatie van plotOutput() om te zien welke parameters je moet gebruiken (regel 18).

Interactieve oefening met praktijkervaring

Probeer deze oefening door deze voorbeeldcode aan te vullen.

ui <- fluidPage(
  sidebarLayout(
    sidebarPanel(
      textInput("title", "Title", "GDP vs life exp"),
      numericInput("size", "Point size", 1, 1),
      checkboxInput("fit", "Add line of best fit", FALSE),
      colourInput("color", "Point color", value = "blue"),
      selectInput("continents", "Continents",
                  choices = levels(gapminder$continent),
                  multiple = TRUE,
                  selected = "Europe"),
      sliderInput("years", "Years",
                  min(gapminder$year), max(gapminder$year),
                  value = c(1977, 2002))
    ),
    mainPanel(
      # Make the plot 600 pixels wide and 600 pixels tall
      plotOutput("plot", ___, ___)
    )
  )
)

# Define the server logic
server <- function(input, output) {
  output$plot <- renderPlot({
    data <- subset(gapminder,
                   continent %in% input$continents &
                     year >= input$years[1] & year <= input$years[2])
    
    p <- ggplot(data, aes(gdpPercap, lifeExp)) +
      geom_point(size = input$size, col = input$color) +
      scale_x_log10() +
      ggtitle(input$title)
    
    if (input$fit) {
      p <- p + geom_smooth(method = "lm")
    }
    p
  })
}

shinyApp(ui = ui, server = server)
Code bewerken en uitvoeren