Skip to contents

Visualizes the Acute:Chronic Workload Ratio (ACWR) trend over time.

Usage

plot_acwr(
  data,
  highlight_zones = TRUE,
  sweet_spot_min = 0.8,
  sweet_spot_max = 1.3,
  high_risk_min = 1.5,
  group_var = NULL,
  group_colors = NULL,
  title = NULL,
  subtitle = NULL,
  ...
)

Arguments

data

A data frame from calculate_acwr() or calculate_acwr_ewma(). Must contain date and acwr_smooth columns.

highlight_zones

Logical, whether to highlight descriptive ACWR bands (e.g., reference band, high ACWR) on the plot. Default TRUE.

sweet_spot_min

Lower bound for the reference ACWR band. Default 0.8.

sweet_spot_max

Upper bound for the reference ACWR band. Default 1.3.

high_risk_min

Lower bound for the high-ACWR band. Default 1.5.

group_var

Optional. Column name for grouping/faceting (e.g., "athlete_id").

group_colors

Optional. Named vector of colors for groups.

title

Optional. Custom title for the plot.

subtitle

Optional. Custom subtitle for the plot.

...

Additional arguments. Arguments activity_type, load_metric, acute_period, chronic_period, start_date, end_date, user_ftp, user_max_hr, user_resting_hr, smoothing_period, acwr_df are deprecated and ignored.

Value

A ggplot object showing the ACWR trend.

Details

Plots the ACWR trend over time. Best practice: Use calculate_acwr() first, then pass the result to this function. ACWR is calculated as acute load / chronic load. The default 0.8-1.3 band is a commonly used reference band.

When highlight_zones = TRUE, all zone labels (High ACWR, Elevated ACWR, Reference Band, Low ACWR) are always displayed regardless of whether data falls within each zone. The y-axis is automatically extended to ensure all zone annotations remain visible. Zone boundaries can be customised via sweet_spot_min, sweet_spot_max, and high_risk_min.

Note: The predictive value of ACWR for injury outcomes is debated in the literature (Impellizzeri et al., 2020). Zone labels should be interpreted as descriptive workload heuristics, not validated injury predictors. See calculate_acwr() documentation for full references.

Examples

# Example using pre-calculated sample data
data("sample_acwr", package = "Athlytics")
p <- plot_acwr(sample_acwr)
print(p)