Avistări de extratereștri: layout cu tab-uri
Așa cum este acum, aplicația pare puțin aglomerată, cu graficul plasat deasupra tabelului. Deoarece construim un dashboard, ar fi mai elegant să separăm cele două rezultate.
Ultimul pas în construirea dashboard-ului tău este să iei plotOutput() și tableOutput() pe care le-ai creat și să adaugi un layout cu tab-uri.
Acest exercițiu face parte din cursul
Crearea aplicațiilor web cu Shiny în R
Instrucțiuni pentru exercițiu
- Adaugă layout-ul cu tab-uri și cele două tab-uri. Primul ar trebui să conțină graficul, iar al doilea – tabelul. Poți să le denumești cum consideri că are mai mult sens!
Exercițiu interactiv practic
Încearcă acest exercițiu completând acest cod de exemplu.
ui <- fluidPage(
titlePanel("UFO Sightings"),
sidebarPanel(
selectInput("state", "Choose a U.S. state:", choices = unique(usa_ufo_sightings$state)),
dateRangeInput("dates", "Choose a date range:",
start = "1920-01-01",
end = "1950-01-01"
)
),
# MODIFY CODE BELOW: Create a tab layout for the dashboard
mainPanel(
plotOutput("shapes"),
tableOutput("duration_table")
)
)
server <- function(input, output) {
output$shapes <- renderPlot({
usa_ufo_sightings %>%
filter(
state == input$state,
date_sighted >= input$dates[1],
date_sighted <= input$dates[2]
) %>%
ggplot(aes(shape)) +
geom_bar() +
labs(
x = "Shape",
y = "# Sighted"
)
})
output$duration_table <- renderTable({
usa_ufo_sightings %>%
filter(
state == input$state,
date_sighted >= input$dates[1],
date_sighted <= input$dates[2]
) %>%
group_by(shape) %>%
summarize(
nb_sighted = n(),
avg_duration_min = mean(duration_sec) / 60,
median_duration_min = median(duration_sec) / 60,
min_duration_min = min(duration_sec) / 60,
max_duration_min = max(duration_sec) / 60
)
})
}
shinyApp(ui, server)