wind_speed_10m_proxy, vertical = station average (km/h). Axes are fixed at 0–30 km/h; pairs outside the square are not drawn. Grey dashed diagonal is y = x; orange line is measured ≈ m × forecast with m = Σ(meas)/Σ(fcst) over fit-window archive hours (3–30 km/h √(obs²+fcst²); not fit to dots in the box).wind_gusts_10m, vertical = station wind_gust_high (km/h). Axes are fixed at 0–40 km/h; pairs outside the square are not drawn. Grey dashed diagonal is y = x; orange line is measured ≈ m × forecast with m = Σ(meas)/Σ(fcst) over archive hours where √(obs² + fcst²) is between 3 and 30 km/h. WU gust dots may use display jitter only.wind_dir_deg and forecast wind_direction_10m, plus a measured speed (station gust if present, otherwise mean wind).
Each dot: angle = signed Δ = station − forecast (wind-from °) relative to forecast — top marks forecast direction (Δ≈0°); right / left = clockwise / counter-clockwise from forecast (+90° / −90°); bottom = opposite (±180°).
Distance from centre = that hour’s measured speed (km/h); radius uses a fixed scale 0–40 km/h (outer ring = 40; intermediate rings 10, 20, 30). Speeds above 40 km/h sit on the outer ring. Numeric labels along Δ = +90°. Dots use the same fill as the station mean/gust scatters above.
How to read these plots
Archive alignment: observation CSVs and model valid_time_utc use hourly UTC bins. Newest model run wins per hour when several archives overlap.
Use Compare to above to switch between HRDPS 1 km, HRDPS 2.5 km, and HRRR archived forecasts at this coordinate.
HRDPS mean-wind pairs use valid hours at or after 2026-06-02T00:00:00Z (windgram-aligned wind_speed_10m_proxy; earlier archive rows are kept but excluded from these plots).