Rendere un grafico reattivo agli input
Ora facciamo in modo che il nostro dashboard cambi in base agli input dell'utente.
Questo esercizio fa parte del corso
Creare dashboard con flexdashboard
Istruzioni dell'esercizio
- Per la mappa delle origini, fai sì che il grafico risponda agli input usando il "dataframe" reattivo
show_trips_df. - Esegui il documento, modifica gli input e osserva cosa cambia (e cosa non cambia).
esercizio interattivo pratico
Prova questo esercizio completando questo codice di esempio.
{"my_document.Rmd":"---\ntitle: \"Bike Shares Daily\"\noutput: \n flexdashboard::flex_dashboard:\n orientation: columns\n vertical_layout: fill\nruntime: shiny\n---\n\n```{r global, include=FALSE}\nlibrary(flexdashboard)\nlibrary(readr)\nlibrary(leaflet)\nlibrary(DT)\nlibrary(tidyverse)\nlibrary(lubridate)\nlibrary(plotly)\n\ntrips_df <- read_csv('https://assets.datacamp.com/production/course_6961/datasets/sanfran_bikeshare_joined_oneday.csv') %>%\n mutate(duration_min = duration_sec / 60,\n start_hour = hour(start_date)) %>%\n filter(duration_min <= 8 * 60) # remove trips longer than 8 hours as suspicious data quality\n\n```\n\n\n\nColumn {data-width=200 .sidebar}\n-----------------------------------------------------------------------\n\n```{r}\n\nsliderInput(\"start_slider\", \n label = \"Select trip start times to display (hour of day):\",\n min = 0, \n max = 24, \n value = c(7,10), \n step = 1)\n\nshow_trips_df <- reactive({\n\n trips_df %>%\n filter(start_hour >= input$start_slider[1] &\n start_hour <= input$start_slider[2])\n\n})\n\n```\n\nColumn {data-width=450}\n-----------------------------------------------------------------------\n### Origins\n\n```{r}\n\n trips_df %>%\n rename(latitude = start_latitude,\n longitude = start_longitude) %>%\n group_by(start_station_id, latitude, longitude) %>%\n count() %>%\n leaflet() %>%\n addTiles() %>%\n addCircles(radius = ~n)\n\n\n```\n\nColumn {data-width=350}\n-----------------------------------------------------------------------\n\n### Total Trips\n\n```{r}\n\nvalueBox(prettyNum(trips_df %>%\n nrow(), big.mark = ','), \n icon = 'fa-bicycle')\n\n\n```\n\n### Trips by Duration\n\n```{r}\n\ntrips_df %>%\n ggplot(aes(x = duration_min)) +\n theme_bw() +\n xlab('Trip Duration (min) \\n') +\n ylab('# trips') +\n geom_histogram() \n\n```\n\n\n"}