Tu primera shinyApp
Ya has visto cómo se pueden combinar entradas y salidas en una shinyApp. También has visto cómo se puede construir una shinyApp para comunicar resultados del estudio del sueño.
Tu objetivo ahora es crear una shinyApp que informe de dos resultados principales:
- La distribución de horas de sueño
- La mediana de horas de sueño entre distintos grupos de edad
En este ejercicio, hemos guardado los datos en un marco de datos de dplyr llamado sleep, y las librerías shiny y tidyverse ya se han cargado.
¡Ahora te toca crear tu propia shinyApp!
Este ejercicio forma parte del curso
Creación de paneles con shinydashboard
Instrucciones del ejercicio
- Añade dos salidas de gráfico llamadas "histogram" y "barchart" al
mainPanel. - En el argumento
choiceNamesdecheckboxGroupInput(), sustituye su contenido por iconos llamados "calendar", "briefcase" y "gift". - Define las dos salidas, una llamada
histogramy otra llamadabarchart. - Usa la función
shinyApp()para renderizar la aplicación shiny.
ejercicio interactivo práctico
Prueba este ejercicio completando este código de ejemplo.
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
___