Plots means, medians, maximums, minimums, and percentiles for each day of the year of flow values
from a daily streamflow data set. Can determine statistics of rolling mean days (e.g. 7-day flows) using the `roll_days`

argument. Calculates statistics from all values, unless specified. The Maximum-Minimum band can be removed using the
`plot_extremes`

argument and the percentile bands can be customized using the `inner_percentiles`

and
`outer_percentiles`

arguments. Data calculated using `calc_daily_stats()`

function. Returns a list of plots.

```
plot_daily_stats(
data,
dates = Date,
values = Value,
groups = STATION_NUMBER,
station_number,
roll_days = 1,
roll_align = "right",
water_year_start = 1,
start_year,
end_year,
exclude_years,
complete_years = FALSE,
months = 1:12,
ignore_missing = FALSE,
plot_extremes = TRUE,
plot_inner_percentiles = TRUE,
plot_outer_percentiles = TRUE,
inner_percentiles = c(25, 75),
outer_percentiles = c(5, 95),
add_year,
log_discharge = TRUE,
log_ticks = ifelse(log_discharge, TRUE, FALSE),
include_title = FALSE
)
```

- data
Data frame of daily data that contains columns of dates, flow values, and (optional) groups (e.g. station numbers). Leave blank or set to

`NULL`

if using`station_number`

argument.- dates
Name of column in

`data`

that contains dates formatted YYYY-MM-DD. Only required if dates column name is not 'Date' (default). Leave blank or set to`NULL`

if using`station_number`

argument.- values
Name of column in

`data`

that contains numeric flow values, in units of cubic metres per second. Only required if values column name is not 'Value' (default). Leave blank if using`station_number`

argument.- groups
Name of column in

`data`

that contains unique identifiers for different data sets, if applicable. Only required if groups column name is not 'STATION_NUMBER'. Function will automatically group by a column named 'STATION_NUMBER' if present. Remove the 'STATION_NUMBER' column beforehand to remove this grouping. Leave blank if using`station_number`

argument.- station_number
Character string vector of seven digit Water Survey of Canada station numbers (e.g.

`"08NM116"`

) of which to extract daily streamflow data from a HYDAT database. Requires`tidyhydat`

package and a HYDAT database. Leave blank if using`data`

argument.- roll_days
Numeric value of the number of days to apply a rolling mean. Default

`1`

.- roll_align
Character string identifying the direction of the rolling mean from the specified date, either by the first (

`'left'`

), last (`'right'`

), or middle (`'center'`

) day of the rolling n-day group of observations. Default`'right'`

.- water_year_start
Numeric value indicating the month (

`1`

through`12`

) of the start of water year for analysis. Default`1`

.- start_year
Numeric value of the first year to consider for analysis. Leave blank or set well before start date (i.e.

`1800`

) to use from the first year of the source data.- end_year
Numeric value of the last year to consider for analysis. Leave blank or set well after end date (i.e.

`2100`

) to use up to the last year of the source data.- exclude_years
Numeric vector of years to exclude from analysis. Leave blank or set to

`NULL`

to include all years.- complete_years
Logical values indicating whether to include only years with complete data in analysis. Default

`FALSE`

.- months
Numeric vector of months to include in analysis. For example,

`3`

for March,`6:8`

for Jun-Aug or`c(10:12,1)`

for first four months (Oct-Jan) when`water_year_start = 10`

(Oct). Default summarizes all months (`1:12`

).- ignore_missing
Logical value indicating whether dates with missing values should be included in the calculation. If

`TRUE`

then a statistic will be calculated regardless of missing dates. If`FALSE`

then only those statistics from time periods with no missing dates will be returned. Default`FALSE`

.- plot_extremes
Logical value to indicate plotting a ribbon with the range of daily minimum and maximum flows. Default

`TRUE`

.- plot_inner_percentiles
Logical value indicating whether to plot the inner percentiles ribbon. Default

`TRUE`

.- plot_outer_percentiles
Logical value indicating whether to plot the outer percentiles ribbon. Default

`TRUE`

.- inner_percentiles
Numeric vector of two percentile values indicating the lower and upper limits of the inner percentiles ribbon for plotting. Default

`c(25,75)`

, set to`NULL`

for no inner ribbon.- outer_percentiles
Numeric vector of two percentile values indicating the lower and upper limits of the outer percentiles ribbon for plotting. Default

`c(5,95)`

, set to`NULL`

for no outer ribbon.- add_year
Numeric value indicating a year of daily flows to add to the daily statistics plot. Leave blank or set to

`NULL`

for no years.- log_discharge
Logical value to indicate plotting the discharge axis (Y-axis) on a logarithmic scale. Default

`FALSE`

.- log_ticks
Logical value to indicate plotting logarithmic scale ticks when

`log_discharge = TRUE`

. Ticks will not appear when`log_discharge = FALSE`

. Default to`TRUE`

when`log_discharge = TRUE`

.- include_title
Logical value to indicate adding the group/station number to the plot, if provided. Default

`FALSE`

.

A list of ggplot2 objects with the following for each station provided:

- Daily_Stats
a plot that contains daily flow statistics

Default plots on each object:

- Mean
daily mean

- Median
daily median

- 25-75 Percentiles
a ribbon showing the range of data between the daily 25th and 75th percentiles

- 5-95 Percentiles
a ribbon showing the range of data between the daily 5th and 95th percentiles

- Minimum-Maximum
a ribbon showing the range of data between the daily minimum and maximums

- 'Year'
(on annual plots) the daily flows for the designated year

```
# Run if HYDAT database has been downloaded (using tidyhydat::download_hydat())
if (file.exists(tidyhydat::hy_downloaded_db())) {
# Plot daily statistics using a data frame and data argument with defaults
flow_data <- tidyhydat::hy_daily_flows(station_number = "08NM116")
plot_daily_stats(data = flow_data,
start_year = 1980)
# Plot daily statistics using only years with no missing data
plot_daily_stats(station_number = "08NM116",
complete_years = TRUE)
# Plot daily statistics and add a specific year's daily flows
plot_daily_stats(station_number = "08NM116",
start_year = 1980,
add_year = 1985)
# Plot daily statistics for 7-day flows for July-September months only
plot_daily_stats(station_number = "08NM116",
start_year = 1980,
roll_days = 7,
months = 7:9)
}
#> $Daily_Statistics
#>
```