From 85517859735cf9e8065f09176117626d1df26409 Mon Sep 17 00:00:00 2001 From: Luca Mussi Date: Tue, 26 Jan 2016 13:22:57 +0100 Subject: [PATCH 1/2] consider 'log' progression for scale-y When computing linear regressions on logarithmic scales, log function should be applied to y values and the resulting range compensated accordingly. --- zingchart.jquery.js | 62 ++++++++++++++++++++++++++++----------------- 1 file changed, 39 insertions(+), 23 deletions(-) diff --git a/zingchart.jquery.js b/zingchart.jquery.js index 4bee999..5678678 100755 --- a/zingchart.jquery.js +++ b/zingchart.jquery.js @@ -1459,40 +1459,60 @@ $.fn.drawTrendline = function (opts) { var myId = this[0].id; calculate.call(this,0); + function calculate(pindex) { var nodes = $(this).getSeriesValues({ plotindex:pindex }); - var sxy = 0, sx = 0, sy = 0, sx2 = 0, l = 0; var oScaleInfo = $(this).getObjectInfo({ object : 'scale', name : 'scale-x' }); + var scaleY = $(this).getObjectInfo({ + object:'scale', + name: 'scale-y' + }); + + var logScale = (scaleY.progression === "log"); + var log = Math.log; var aScaleValues = oScaleInfo.values; + var node, x, y; + var sxy = 0, sx = 0, sy = 0, sx2 = 0, l = 0; for (var i=0;i Date: Fri, 29 Jan 2016 09:25:13 +0100 Subject: [PATCH 2/2] now ignoring nulls and non-numbers in trendlines computation --- zingchart.jquery.js | 18 ++++++++++-------- 1 file changed, 10 insertions(+), 8 deletions(-) diff --git a/zingchart.jquery.js b/zingchart.jquery.js index 5678678..9abb541 100755 --- a/zingchart.jquery.js +++ b/zingchart.jquery.js @@ -1489,15 +1489,17 @@ y = node; } - if (logScale) { - y = log(y); + if (typeof x === "number" && isFinite(x) && typeof y === "number" && isFinite(y)) { + if (logScale) { + y = log(y); + } + + sxy += x*y; + sx += x; + sy += y; + sx2 += x*x; + l++; } - - sxy += x*y; - sx += x; - sy += y; - sx2 += x*x; - l++; } var b = (l * sxy - sx * sy) / (l * sx2 - sx * sx);