@fusioncharts/features
Version:
FusionCharts JavaScript charting framework
1 lines • 1.68 kB
JavaScript
;exports.__esModule=true;exports.default=getPolynomialRegressionPoints;function compareDatasetByXValues(a,b){return parseFloat(a.x)-parseFloat(b.x)}function quadraticYOnX(data){data.sort(compareDatasetByXValues);var x=[],y=[],m=0,z=0,n=data.length,q=0,w=0,r=0,e=0,v=0,t,f,u,l,o,a,b,c,px,py,output=[];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++){m+=y[_i];z+=x[_i]*y[_i];v+=x[_i]*x[_i]*y[_i];q+=x[_i];w+=x[_i]*x[_i];e+=x[_i]*x[_i]*x[_i];r+=x[_i]*x[_i]*x[_i]*x[_i]}t=w-q*q/n;f=z-q*m/n;u=e-w*q/n;l=v-w*m/n;o=r-w*w/n;if(t*o-u*u===0||n===0){return[data,[]]}a=(l*t-f*u)/(t*o-u*u);b=(f*o-l*u)/(t*o-u*u);c=m/n-b*(q/n)-a*(w/n);for(var _i2=0;_i2<n;_i2++){output.push({x:x[_i2],y:a*x[_i2]*x[_i2]+b*x[_i2]+c})}return[data,output]}function quadraticXOnY(data){data.sort(compareDatasetByXValues);var x=[],y=[],m=0,z=0,n=data.length,q=0,w=0,r=0,e=0,v=0,t,f,u,l,o,a,b,c,px,py,output=[];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++){m+=x[_i3];z+=y[_i3]*x[_i3];v+=y[_i3]*y[_i3]*x[_i3];q+=y[_i3];w+=y[_i3]*y[_i3];e+=y[_i3]*y[_i3]*y[_i3];r+=y[_i3]*y[_i3]*y[_i3]*y[_i3]}t=w-q*q/n;f=z-q*m/n;u=e-w*q/n;l=v-w*m/n;o=r-w*w/n;if(t*o-u*u===0||n===0){return[data,[]]}a=(l*t-f*u)/(t*o-u*u);b=(f*o-l*u)/(t*o-u*u);c=m/n-b*(q/n)-a*(w/n);for(var _i4=0;_i4<n;_i4++){output.push({x:a*y[_i4]*y[_i4]+b*y[_i4]+c,y:y[_i4]})}return[data,output]}function getPolynomialRegressionPoints(data,showYOnX){if(Number(showYOnX)){return quadraticYOnX(data)}return quadraticXOnY(data)}