UNPKG

@fusioncharts/features

Version:

FusionCharts JavaScript charting framework

1 lines 1.61 kB
"use strict";exports.__esModule=true;exports.default=getLinearRegressionPoints;function compareDatasetByAttributeValue(a,b,attr){return parseFloat(a[attr])-parseFloat(b[attr])}function compareByX(a,b){return compareDatasetByAttributeValue(a,b,"x")}function compareByY(a,b){return compareDatasetByAttributeValue(a,b,"y")}function linearYOnX(data){data.sort(compareByX);var x=[],y=[],meanX=0,meanY=0,quo=0,denom=0,n=data.length,m,c,output=[],px,py;for(var i=0;i<data.length;i++){px=Number(data[i].x);py=Number(data[i].y);if(isNaN(px)||isNaN(py)){continue}x.push(px);y.push(py)}n=x.length;for(var _i=0;_i<n;_i++){meanX+=x[_i];meanY+=y[_i]}meanX/=n;meanY/=n;for(var _i2=0;_i2<n;_i2++){quo+=(x[_i2]-meanX)*(y[_i2]-meanY);denom+=(x[_i2]-meanX)*(x[_i2]-meanX)}if(denom===0){return[[],[]]}m=quo/denom;c=meanY-m*meanX;output.push({x:x[0],y:m*x[0]+c});output.push({x:x[n-1],y:m*x[n-1]+c});return[[],output]}function linearXOnY(data){data.sort(compareByY);var x=[],y=[],meanX=0,meanY=0,quo=0,denom=0,n=data.length,m,c,output=[],px,py;for(var i=0;i<data.length;i++){px=Number(data[i].x);py=Number(data[i].y);if(isNaN(px)||isNaN(py)){continue}x.push(px);y.push(py)}n=x.length;for(var _i3=0;_i3<n;_i3++){meanX+=x[_i3];meanY+=y[_i3]}meanX/=n;meanY/=n;for(var _i4=0;_i4<n;_i4++){quo+=(x[_i4]-meanX)*(y[_i4]-meanY);denom+=(y[_i4]-meanY)*(y[_i4]-meanY)}if(denom===0){return[[],[]]}m=quo/denom;c=meanX-m*meanY;output=[];output.push({x:m*y[0]+c,y:y[0]});output.push({x:m*y[n-1]+c,y:y[n-1]});return[[],output]}function getLinearRegressionPoints(data,showYOnX){if(Number(showYOnX)){return linearYOnX(data)}return linearXOnY(data)}