import matplotlib.pyplot as plt
import pandas as pd
import datetime
if 'datum' not in df_raw.columns:
df_raw['datum'] = pd.to_datetime(df_raw['startTimeLocal'], utc=True).dt.tz_localize(None)
else:
df_raw['datum'] = pd.to_datetime(df_raw['datum'], utc=True).dt.tz_localize(None)
if 'afstand_km' not in df_raw.columns:
df_raw['afstand_km'] = df_raw['distance'] / 1000
if 'duur_min' not in df_raw.columns:
df_raw['duur_min'] = df_raw['duration'] / 60
if 'sport' not in df_raw.columns and 'activityType' in df_raw.columns:
df_raw['sport'] = df_raw['activityType'].apply(lambda x: x.get('typeKey', '') if isinstance(x, dict) else str(x))
huidig_jaar = datetime.datetime.now().year
start_van_het_jaar = pd.to_datetime(f"{huidig_jaar}-01-01")
toegestane_sporten = ['running', 'trail_running']
df_combo = df_raw[
(df_raw['datum'] >= start_van_het_jaar) &
(df_raw['sport'].isin(toegestane_sporten)) &
(df_raw['averageHR'] > 0) &
(df_raw['afstand_km'] > 0)
].copy()
df_combo['tempo_decimaal'] = df_combo['duur_min'] / df_combo['afstand_km']
df_combo = df_combo.sort_values('datum')
df_combo['trend_hr'] = df_combo['averageHR'].rolling(window=5, min_periods=1).mean()
df_combo['trend_tempo'] = df_combo['tempo_decimaal'].rolling(window=5, min_periods=1).mean()
fig, ax1 = plt.subplots(figsize=(12, 6))
#laag 1
kleur_hr = '#e74c3c'
ax1.scatter(df_combo['datum'], df_combo['averageHR'], color=kleur_hr, alpha=0.2)
ax1.plot(df_combo['datum'], df_combo['trend_hr'], color=kleur_hr, linewidth=3, label='Trend Hartslag (bpm)')
ax1.set_xlabel('Datum', fontsize=12)
ax1.set_ylabel('Hartslag (bpm)', color=kleur_hr, fontsize=12, fontweight='bold')
ax1.tick_params(axis='y', labelcolor=kleur_hr)
#laag 2
ax2 = ax1.twinx()
kleur_tempo = '#3498db'
ax2.scatter(df_combo['datum'], df_combo['tempo_decimaal'], color=kleur_tempo, alpha=0.2)
ax2.plot(df_combo['datum'], df_combo['trend_tempo'], color=kleur_tempo, linewidth=3, label='Trend Tempo (min/km)')
ax2.set_ylabel('Tempo (min/km)', color=kleur_tempo, fontsize=12, fontweight='bold')
ax2.tick_params(axis='y', labelcolor=kleur_tempo)
ax2.invert_yaxis()
plt.title(f'Hartslag vs Tempo ', fontsize=16, fontweight='bold')
ax1.grid(axis='x', linestyle='--', alpha=0.4)
fig.legend(loc='upper right', bbox_to_anchor=(0.9, 0.88))
plt.show()