From 3b905a7710d9e60147e33a93238b1c0e080da8b8 Mon Sep 17 00:00:00 2001 From: Gertjan van den Burg Date: Thu, 5 Sep 2019 16:20:21 +0100 Subject: Add support for univariate datasets with missing values --- app/static/js/makeChart.js | 97 +++++++++++++++++++++++++++++----------------- 1 file changed, 62 insertions(+), 35 deletions(-) (limited to 'app/static') diff --git a/app/static/js/makeChart.js b/app/static/js/makeChart.js index 9b074f1..9ee0e2e 100644 --- a/app/static/js/makeChart.js +++ b/app/static/js/makeChart.js @@ -4,10 +4,18 @@ function preprocessData(data) { var n = 0; cleanData = []; + run = []; for (i=0; i 0) + cleanData.push(run); + run = []; + continue; + } + run.push({"X": n++, "Y": d}); } + cleanData.push(run); return cleanData; } @@ -26,13 +34,20 @@ function scaleAndAxis(data, width, height) { // influenced by whether a change is big in the absolute sense. yAxis.ticks(0); + var xmin = Math.min(...data.map(function(run) { return Math.min(...run.map(it => it.X)); })) + var xmax = Math.max(...data.map(function(run) { return Math.max(...run.map(it => it.X)); })) + var ymin = Math.min(...data.map(function(run) { return Math.min(...run.map(it => it.Y)); })) + var ymax = Math.max(...data.map(function(run) { return Math.max(...run.map(it => it.Y)); })) + var xExtent = [xmin, xmax]; + var yExtent = [ymin, ymax]; + // compute the domains for the axes - var xExtent = d3.extent(data, function(d) { return d.X; }); + //var xExtent = d3.extent(data, function(d) { return d.X; }); var xRange = xExtent[1] - xExtent[0]; var xDomainMin = xExtent[0] - xRange * 0.02; var xDomainMax = xExtent[1] + xRange * 0.02; - var yExtent = d3.extent(data, function(d) { return d.Y; }); + //var yExtent = d3.extent(data, function(d) { return d.Y; }); var yRange = yExtent[1] - yExtent[0]; var yDomainMin = yExtent[0] - yRange * 0.05; var yDomainMax = yExtent[1] + yRange * 0.05; @@ -92,10 +107,13 @@ function baseChart( width, height); - // Create the line object - var lineObj = d3.line() - .x(function(d) { return xScale(d.X); }) - .y(function(d) { return yScale(d.Y); }); + var lineObjects = []; + for (let r=0; r