import pandas as pd
from matplotlib import pyplot as plt, gridspec, ticker, dates
import time
import seaborn as sns
"darkgrid") sns.set_style(
= pd.read_csv("./posts/skierg-marathon/concept2-result-79965221.csv") data
= plt.figure(figsize=(6, 8), dpi=600)
fig
= gridspec.GridSpec(3, 1, height_ratios=[2,1,1])
gs =0.2)
gs.update(hspace
= plt.subplot(gs[0])
ax1 190, unit="s"), pd.to_datetime(130, unit="s"))
ax1.set_ylim(pd.to_datetime("Distance (meters)"], pd.to_datetime(data["Pace (seconds)"], unit="s"), color="#2f4b7c", alpha=0.3, linewidth=0.5)
ax1.plot(data["Distance (meters)"], pd.to_datetime(data["Pace (seconds)"].rolling(33).mean(), unit="s"), color="#2f4b7c", alpha=0.6, linewidth=0.75)
ax1.plot(data["Distance (meters)"], pd.to_datetime(data["Pace (seconds)"].rolling(66).mean(), unit="s"), color="#2f4b7c", alpha=0.9, linewidth=1.25)
ax1.plot(data["Pace")
ax1.set_ylabel(False)
ax1.xaxis.set_visible(="%M:%S"))
ax1.yaxis.set_major_formatter(dates.DateFormatter(fmt0, 42195)
ax1.set_xlim(
plt.gca().invert_yaxis()
= plt.subplot(gs[1])
ax2 "Distance (meters)"], data["Watts"], color="#2f4b7c", alpha=0.3, linewidth=0.5)
ax2.plot(data["Distance (meters)"], data["Watts"].rolling(33).mean(), color="#2f4b7c", alpha=0.6, linewidth=0.75)
ax2.plot(data["Distance (meters)"], data["Watts"].rolling(66).mean(), color="#2f4b7c", alpha=0.9, linewidth=1.25)
ax2.plot(data["Watts")
ax2.set_ylabel(0, 42195)
ax2.set_xlim(False)
ax2.xaxis.set_visible(
= plt.subplot(gs[2])
ax3 "Distance (meters)"], data["Stroke Rate"], color="#2f4b7c", alpha=0.3, linewidth=0.5)
ax3.plot(data["Distance (meters)"], data["Stroke Rate"].rolling(33).mean(), color="#2f4b7c", alpha=0.6, linewidth=0.75)
ax3.plot(data["Distance (meters)"], data["Stroke Rate"].rolling(66).mean(), color="#2f4b7c", alpha=0.9, linewidth=1.25)
ax3.plot(data[30, 55)
ax3.set_ylim("spm")
ax3.set_ylabel(
"{x:,.0f}"))
ax3.xaxis.set_major_formatter(ticker.StrMethodFormatter(
ax3.set_xticks(ax3.get_xticks())=90)
ax3.set_xticklabels(ax3.get_xticklabels(), rotation"metres")
ax3.set_xlabel(0, 42195)
ax3.set_xlim(
plt.show()

"ddistance"] = data["Distance (meters)"].diff()
data["dtime"] = data["Time (seconds)"].diff() data[
= sns.jointplot(data=data,
g ="dtime",
x="ddistance",
y=(0.5, 3),
xlim=(2, 8),
ylim="#2f4b7c",
color="reg",
kind=0.2,
x_jitter=0.2,
y_jitter=dict(alpha=0.3, s=0.2))
scatter_kws
g.plot_joint(sns.kdeplot, ="#a05195",
color=0,
zorder=16,
levels=0.6,
alpha=True)
fill="$\Delta_{d}, m$",
g.set_axis_labels(ylabel="$\Delta_t, s$")
xlabel plt.show()

Citation
BibTeX citation:
@misc{csefalvay,
author = {{Chris von Csefalvay}},
url = {https://chrisvoncsefalvay.com/posts/skierg-marathon/skierg-marathon.html},
langid = {en-GB}
}
For attribution, please cite this work as:
Chris von Csefalvay. n.d. https://chrisvoncsefalvay.com/posts/skierg-marathon/skierg-marathon.html.