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 least-squares measured ≈ m × forecast constrained through (0,0) (pairs where forecast or measured mean wind is zero are excluded from that fit).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 least-squares measured ≈ m × forecast through (0,0) (pairs where forecast or measured gust is zero are excluded from that fit).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 HRDPS valid_time_utc use hourly UTC bins. Newest HRDPS model run wins per hour when several archives overlap.