UNPKG

d3fc-sample

Version:

A data subsampler that chooses representative data points using a largest triangle or mode-median approach.

1 lines 2.48 kB
!function(n,e){"object"==typeof exports&&"undefined"!=typeof module?e(exports,require("d3-array"),require("d3fc-rebind")):"function"==typeof define&&define.amd?define(["exports","d3-array","d3fc-rebind"],e):e(n.fc=n.fc||{},n.d3,n.fc)}(this,function(n,e,t){"use strict";var r=function(){var n=10,t=function(t){return n<=1?t.map(function(n){return[n]}):e.range(0,Math.ceil(t.length/n)).map(function(e){return t.slice(e*n,(e+1)*n)})};return t.bucketSize=function(e){return arguments.length?(n=e,t):n},t},u=function(){function n(n){var t=n.map(function(n){return[i(n),c(n)]});return e.range(1,t.length-1).map(function(n){var e=t[n-1],r=t[n],u=t[n+1];return.5*Math.abs((e[0]-u[0])*(r[1]-e[1])-(e[0]-r[0])*(u[1]-e[1]))})}var u=r(),i=function(n){return n},c=function(n){return n},f=function(t){if(u.bucketSize()>=t.length)return t;var r=n(t),i=u(r),c=u(t.slice(1,t.length-1)),f=c.map(function(n,t){var r=i[t],u=e.max(r);return n[r.indexOf(u)]});return[].concat([t[0]],f,[t[t.length-1]])};return t.rebind(f,u,"bucketSize"),f.x=function(n){return arguments.length?(i=n,f):i},f.y=function(n){return arguments.length?(c=n,f):c},f},i=function(){var n=function(n){return n},u=function(n){return n},i=r(),c=function(t){if(i.bucketSize()>=t.length)return t;var r=i(t.slice(1,t.length-1)),c=t[0],f=t[t.length-1],o=[].concat([c],r,[f]),a=n(c),l=u(c),d=r.map(function(t,r){var i=e.mean(o[r+1],n),c=e.mean(o[r+1],u),f=t.map(function(e){return[n(e),u(e)]}),d=f.map(function(n){return.5*Math.abs((a-i)*(n[1]-l)-(a-n[0])*(c-l))}),h=d.indexOf(e.max(d)),g=f[h];return a=g[0],l=g[1],t[h]});return[].concat([t[0]],d,[t[t.length-1]])};return t.rebind(c,i,"bucketSize"),c.x=function(e){return arguments.length?(n=e,c):n},c.y=function(n){return arguments.length?(u=n,c):u},c},c=function(){var n=r(),u=function(n){return n},i=function(t){if(n.bucketSize()>t.length)return t;var r=e.extent(t,u),i=n(t.slice(1,t.length-1)),c=i.map(function(n,e){var t,i,c={},f=!0,o=n.map(u),a=o.filter(function(n){return n===r[0]||n===r[1]}).map(function(n){return o.indexOf(n)})[0];return void 0!==a?n[a]:(o.forEach(function(n,e){void 0===c[n]&&(c[n]=0),c[n]++,c[n]>c[t]||void 0===t?(t=n,i=e,f=!0):c[n]===c[t]&&(f=!1)}),f?n[i]:n[Math.floor(n.length/2)])});return[].concat([t[0]],c,[t[t.length-1]])};return t.rebind(i,n,"bucketSize"),i.value=function(n){return arguments.length?(u=n,i):u},i};n.bucket=r,n.largestTriangleOneBucket=u,n.largestTriangleThreeBucket=i,n.modeMedian=c,Object.defineProperty(n,"__esModule",{value:!0})});