Aan de slagBegin gratis

Je eerste shinyApp

Je hebt gezien hoe inputs en outputs samenkomen in een shinyApp. Je hebt ook gezien hoe je met een shinyApp de resultaten van het slaaponderzoek kunt tonen.

Je doel is nu om een shinyApp te maken die twee hoofdresultaten rapporteert:

  1. De verdeling van het aantal uren slaap
  2. De mediaan van het aantal uren slaap voor verschillende leeftijdsgroepen

In deze oefening is de data opgeslagen als een dplyr-dataframe met de naam sleep, en de libraries shiny en tidyverse zijn al geladen.

Nu ben jij aan de beurt om je eigen shinyApp te maken!

Deze oefening maakt deel uit van de cursus

Dashboards bouwen met shinydashboard

Bekijk cursus

Oefeninstructies

  • Voeg twee plotoutputs met de naam "histogram" en "barchart" toe aan de mainPanel.
  • Vervang in het argument choiceNames in checkboxGroupInput() de inhoud door iconen met de namen "calendar", "briefcase" en "gift".
  • Definieer de twee outputs, één met de naam histogram en een andere met de naam barchart.
  • Gebruik de functie shinyApp() om de shiny-app te renderen.

Interactieve oefening met praktijkervaring

Probeer deze oefening door deze voorbeeldcode aan te vullen.

ui <- fluidPage(
  titlePanel("Sleeping habits in America"), 
  fluidRow(
  # Place two plots here, called "histogram" and "barchart"
  mainPanel(___("histogram"), ___("barchart")), 
  inputPanel(sliderInput("binwidth", 
                         label = "Bin width", 
                         min = 0.1, max = 2, 
                         step = 0.01, value=0.25),
             checkboxGroupInput("days", "Choose types of days:",
                                # Replace the list elements with icons called "calendar", "briefcase" and "gift"
                                choiceNames = list("All days", 
                                                   "Non-holiday weekdays", 
                                                   "Weekend days/holidays"), 
                                choiceValues = list("All days", 
                                                    "Nonholiday weekdays", 
                                                    "Weekend days and holidays"))), 
  "In general, across the different age groups, Americans seem to get adequate daily rest." ))

server <- function(input, output, session) {
  # Define the histogram and barchart
  output$histogram <- ___({
    ggplot(sleep, aes(x=`Avg hrs per day sleeping`)) + 
    geom_histogram(binwidth = input$binwidth, col='white') + 
    theme_classic()
  })
  ___ <- ___({
    filter(sleep, `Type of Days` %in% input$days) %>%
      group_by(`Type of Days`, `Age Group`) %>%
      summarize(`Median hours` = median(`Avg hrs per day sleeping`)) %>%
      ggplot(aes(x = `Median hours`, y = `Age Group`, fill = `Type of Days`)) +
      geom_col(position = 'dodge') + theme_classic()
  })
}

# Use shinyApp() to render the shinyApp
___
Code bewerken en uitvoeren