Penampakan alien: tata letak tab
Saat ini, aplikasi terlihat agak ramai karena grafik berada di atas tabel. Mengingat ini adalah dasbor, akan lebih baik jika kedua keluaran dipisahkan.
Langkah terakhir dalam membangun dasbor Anda adalah mengambil plotOutput() dan tableOutput() yang telah Anda buat lalu menambahkan tata letak tab.
Latihan ini adalah bagian dari kursus
Membangun Aplikasi Web dengan Shiny di R
Petunjuk latihan
- Tambahkan tata letak panel tab dan dua tab. Tab pertama harus berisi plot, dan tab kedua harus berisi tabel. Silakan beri nama sesuai yang paling masuk akal bagi Anda!
Latihan interaktif praktis
Cobalah latihan ini dengan menyelesaikan kode contoh berikut.
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)