Deine erste shinyApp
Du hast gesehen, wie Eingaben und Ausgaben in einer shinyApp zusammenkommen. Du hast auch gesehen, wie eine shinyApp aufgebaut sein kann, um Ergebnisse aus der Schlafstudie zu kommunizieren.
Dein Ziel ist jetzt, eine shinyApp zu erstellen, die zwei Hauptergebnisse berichtet:
- Die Verteilung der Schlafstunden
- Die medianen Schlafstunden in verschiedenen Altersgruppen
In dieser Übung haben wir die Daten als dplyr-Data-Frame namens sleep gespeichert, und die Bibliotheken shiny und tidyverse sind bereits geladen.
Jetzt bist du dran: Erstelle deine eigene shinyApp!
Diese Übung ist Teil des Kurses
Dashboards mit shinydashboard erstellen
Anleitung zur Übung
- Füge zwei Plot-Ausgaben namens "histogram" und "barchart" zum
mainPanelhinzu. - Ersetze im Argument
choiceNamesincheckboxGroupInput()den Inhalt durch Icons namens "calendar", "briefcase" und "gift". - Definiere die beiden Outputs, einen namens
histogramund einen weiteren namensbarchart. - Verwende die Funktion
shinyApp(), um die shiny-App zu rendern.
Interaktive Übung
Vervollständige den Beispielcode, um diese Übung erfolgreich abzuschließen.
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
___