docs: function makeSplineChartPath(chart, width, t, maxValue, chartHeight, chartHeightOffset, markerRadius, pointsOnScreen, closePath) {
      let heightScaler = (chartHeight-markerRadius)/maxValue;
      let xSpacing = width / pointsOnScreen;
      let centeriser = xSpacing / 2 - markerRadius;
      let fullWidth = xSpacing*(chart.data.length-1) + markerRadius + centeriser;
  
      let xCord;
      let xCords = [];
      let yCords = [];
      chart.data.forEach((d, idx) => {
          let spacing = idx*xSpacing + centeriser;
          if (spacing > fullWidth * t && chart.drawChart) {
            return true;
          }
          xCord = makeXcord(chart, fullWidth, t, spacing, markerRadius);
          xCords.push(xCord);
          yCords.push((chartHeight+chartHeightOffset) - d.value * heightScaler  * (chart.timingFunctions ? chart.timingFunctions[idx % chart.timingFunctions.length](t) : 1));
      });
      let px = computeSplineControlPoints(xCords);
  	  let py = computeSplineControlPoints(yCords);
      let splines = [`M ${xCords[0]} ${yCords[0]}`];
        for (i=0;i<xCords.length-1;i++) {
          splines.push(makeSpline(xCords[i],yCords[i],px.p1[i],py.p1[i],px.p2[i],py.p2[i],xCords[i+1],yCords[i+1]));
        }
        if (closePath) { // close for area spline graph
          splines.push(`V ${chartHeight+chartHeightOffset} H ${xCords[0]} Z`);
        }
      return {
        path: splines.join(','),
        width: xCords.slice(-1) + markerRadius,
        maxScroll: fullWidth - xSpacing + markerRadius
      };
    }