hrOrderedChart=Plot.plot({
title:html`<h2 class="hr">heart rate</h2>`,
subtitle: html`<h3>average heartrate per run, bpm</h3>`,
y:{
domain:[140,180],
label:"bpm",
grid:true,
tickSize:0,
},
color: {
type: "categorical",
domain: ["zone 2", "zone 3", "zone 4",],
range: ["#46eee1", "#bdfe00", "#ff820a"],
opacity:0.25,
stroke:0,
legend:true
},
x: {
label: "date",
domain:[strava[0].x_date, strava[strava.length-1].x_date]
},
marks: [
Plot.dot(strava, {x: "x_date", y: "average_heartrate", z:null,fill: (e) =>isMarathon(e)?"red":"lime", fillOpacity:0.2, stroke: (e)=> isMarathon(e)?"red":"lime", strokeWidth:(e)=>isMarathon(e)?1.5:0.5}),
Plot.lineY(strava, Plot.windowY(9, {x: "x_date", y: "average_heartrate", curve:'basis', strokeWidth:0.7, stroke: "gray"})),
Plot.linearRegressionY(strava, {x: "x_date", y: "average_heartrate", fill: "lime", stroke: "lime", strokeWidth:2.5}),
()=>styles,
Plot.text(strava, { filter: isMarathon,x: "x_date", y: "average_heartrate", dx : -46,dy:-20, text: (d) => `half-marathon`, fill:"red", rotate:25 }),
Plot.rect([strava[0]], {
x1: strava[0].x_date,
y1: 140,
x2: strava[strava.length-1].x_date,
y2: 152,
fill:"#46eee1",
fillOpacity:0.05,
}), Plot.rect([strava[0]], {
x1: strava[0].x_date,
y1: 153,
x2: strava[strava.length-1].x_date,
y2: 165,
fill:"#bdfe00",
fillOpacity:0.05,
}), Plot.rect([strava[0]], {
x1: strava[0].x_date,
y1: 166,
x2: strava[strava.length-1].x_date,
y2: 179,
fill:"#ff820a",
fillOpacity:0.05,
}), ,xAxis, () => styles,
]
})