Socket
Socket
Sign inDemoInstall

vega-statistics

Package Overview
Dependencies
Maintainers
1
Versions
32
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

vega-statistics - npm Package Compare versions

Comparing version 1.7.9 to 1.7.10

35

build/vega-statistics.js

@@ -1188,4 +1188,4 @@ (function (global, factory) {

// subdivide up to accuracy of 0.1 degrees
const MIN_RADIANS = 0.1 * Math.PI / 180; // Adaptively sample an interpolated function over a domain extent
// subdivide up to accuracy of 0.5 degrees
const MIN_RADIANS = 0.5 * Math.PI / 180; // Adaptively sample an interpolated function over a domain extent

@@ -1222,4 +1222,6 @@ function sampleCurve (f, extent, minSteps, maxSteps) {

let p0 = prev[0],
p1 = next[next.length - 1];
let p0 = prev[0];
let p1 = next[next.length - 1];
const sx = 1 / span;
const sy = scaleY(p0[1], next);

@@ -1229,6 +1231,7 @@ while (p1) {

const pm = point((p0[0] + p1[0]) / 2);
const dx = pm[0] - p0[0] >= stop;
if (pm[0] - p0[0] >= stop && angleDelta(p0, pm, p1) > MIN_RADIANS) {
if (dx && angleDelta(p0, pm, p1, sx, sy) > MIN_RADIANS) {
// maximum resolution has not yet been met, and
// subdivision midpoint sufficiently different from endpoint
// subdivision midpoint is sufficiently different from endpoint
// save subdivision, push midpoint onto the visitation stack

@@ -1250,5 +1253,19 @@ next.push(pm);

function angleDelta(p, q, r) {
const a0 = Math.atan2(r[1] - p[1], r[0] - p[0]),
a1 = Math.atan2(q[1] - p[1], q[0] - p[0]);
function scaleY(init, points) {
let ymin = init;
let ymax = init;
const n = points.length;
for (let i = 0; i < n; ++i) {
const y = points[i][1];
if (y < ymin) ymin = y;
if (y > ymax) ymax = y;
}
return 1 / (ymax - ymin);
}
function angleDelta(p, q, r, sx, sy) {
const a0 = Math.atan2(sy * (r[1] - p[1]), sx * (r[0] - p[0])),
a1 = Math.atan2(sy * (q[1] - p[1]), sx * (q[0] - p[0]));
return Math.abs(a0 - a1);

@@ -1255,0 +1272,0 @@ }

@@ -1,2 +0,2 @@

var vega=function(t){"use strict";function*n(t,n){if(null==n)for(let n of t)null!=n&&""!==n&&(n=+n)>=n&&(yield n);else{let r=-1;for(let e of t)e=n(e,++r,t),null!=e&&""!==e&&(e=+e)>=e&&(yield e)}}function r(t,n){return t<n?-1:t>n?1:t>=n?0:NaN}function e(t){return null===t?NaN:+t}function o(t,n){let r;if(void 0===n)for(const n of t)null!=n&&(r<n||void 0===r&&n>=n)&&(r=n);else{let e=-1;for(let o of t)null!=(o=n(o,++e,t))&&(r<o||void 0===r&&o>=o)&&(r=o)}return r}function l(t,n){let r;if(void 0===n)for(const n of t)null!=n&&(r>n||void 0===r&&n>=n)&&(r=n);else{let e=-1;for(let o of t)null!=(o=n(o,++e,t))&&(r>o||void 0===r&&o>=o)&&(r=o)}return r}function u(t,n,e=0,o=t.length-1,l=r){for(;o>e;){if(o-e>600){const r=o-e+1,f=n-e+1,a=Math.log(r),i=.5*Math.exp(2*a/3),s=.5*Math.sqrt(a*i*(r-i)/r)*(f-r/2<0?-1:1);u(t,n,Math.max(e,Math.floor(n-f*i/r+s)),Math.min(o,Math.floor(n+(r-f)*i/r+s)),l)}const r=t[n];let a=e,i=o;for(f(t,e,n),l(t[o],r)>0&&f(t,e,o);a<i;){for(f(t,a,i),++a,--i;l(t[a],r)<0;)++a;for(;l(t[i],r)>0;)--i}0===l(t[e],r)?f(t,e,i):(++i,f(t,i,o)),i<=n&&(e=i+1),n<=i&&(o=i-1)}return t}function f(t,n,r){const e=t[n];t[n]=t[r],t[r]=e}function a(t,n,r){if(e=(t=Float64Array.from(function*(t,n){if(void 0===n)for(let n of t)null!=n&&(n=+n)>=n&&(yield n);else{let r=-1;for(let e of t)null!=(e=n(e,++r,t))&&(e=+e)>=e&&(yield e)}}(t,r))).length){if((n=+n)<=0||e<2)return l(t);if(n>=1)return o(t);var e,f=(e-1)*n,a=Math.floor(f),i=o(u(t,a).subarray(0,a+1));return i+(l(t.subarray(a+1))-i)*(f-a)}}function i(t,o,l){const u=Float64Array.from(n(t,l));return u.sort(r),o.map(t=>function(t,n,r=e){if(o=t.length){if((n=+n)<=0||o<2)return+r(t[0],0,t);if(n>=1)return+r(t[o-1],o-1,t);var o,l=(o-1)*n,u=Math.floor(l),f=+r(t[u],u,t);return f+(+r(t[u+1],u+1,t)-f)*(l-u)}}(u,t))}function s(t,n){return i(t,[.25,.5,.75],n)}function c(t,n){const r=t.length,e=function(t,n){const r=function(t,n){let r,e=0,o=0,l=0;if(void 0===n)for(let n of t)null!=n&&(n=+n)>=n&&(r=n-o,o+=r/++e,l+=r*(n-o));else{let u=-1;for(let f of t)null!=(f=n(f,++u,t))&&(f=+f)>=f&&(r=f-o,o+=r/++e,l+=r*(f-o))}if(e>1)return l/(e-1)}(t,n);return r?Math.sqrt(r):r}(t,n),o=s(t,n),l=(o[2]-o[0])/1.34;return 1.06*(Math.min(e,l)||e||Math.abs(o[0])||1)*Math.pow(r,-.2)}t.random=Math.random;const h=Math.sqrt(2*Math.PI),d=Math.SQRT2;let M=NaN;function m(n,r){n=n||0,r=null==r?1:r;let e,o,l=0,u=0;if(M==M)l=M,M=NaN;else{do{l=2*t.random()-1,u=2*t.random()-1,e=l*l+u*u}while(0===e||e>1);o=Math.sqrt(-2*Math.log(e)/e),l*=o,M=u*o}return n+l*r}function p(t,n,r){const e=(t-(n||0))/(r=null==r?1:r);return Math.exp(-.5*e*e)/(r*h)}function g(t,n,r){const e=(t-(n=n||0))/(r=null==r?1:r),o=Math.abs(e);let l;if(o>37)l=0;else{const t=Math.exp(-o*o/2);let n;o<7.07106781186547?(n=.0352624965998911*o+.700383064443688,n=n*o+6.37396220353165,n=n*o+33.912866078383,n=n*o+112.079291497871,n=n*o+221.213596169931,n=n*o+220.206867912376,l=t*n,n=.0883883476483184*o+1.75566716318264,n=n*o+16.064177579207,n=n*o+86.7807322029461,n=n*o+296.564248779674,n=n*o+637.333633378831,n=n*o+793.826512519948,n=n*o+440.413735824752,l/=n):(n=o+.65,n=o+4/n,n=o+3/n,n=o+2/n,n=o+1/n,l=t/n/2.506628274631)}return e>0?1-l:l}function b(t,n,r){return t<0||t>1?NaN:(n||0)+(null==r?1:r)*d*function(t){let n,r=-Math.log((1-t)*(1+t));r<6.25?(r-=3.125,n=-364441206401782e-35,n=n*r-16850591381820166e-35,n=128584807152564e-32+n*r,n=11157877678025181e-33+n*r,n=n*r-1333171662854621e-31,n=20972767875968562e-33+n*r,n=6637638134358324e-30+n*r,n=n*r-4054566272975207e-29,n=n*r-8151934197605472e-29,n=26335093153082323e-28+n*r,n=n*r-12975133253453532e-27,n=n*r-5415412054294628e-26,n=1.0512122733215323e-9+n*r,n=n*r-4.112633980346984e-9,n=n*r-2.9070369957882005e-8,n=4.2347877827932404e-7+n*r,n=n*r-13654692000834679e-22,n=n*r-13882523362786469e-21,n=.00018673420803405714+n*r,n=n*r-.000740702534166267,n=n*r-.006033670871430149,n=.24015818242558962+n*r,n=1.6536545626831027+n*r):r<16?(r=Math.sqrt(r)-3.25,n=2.2137376921775787e-9,n=9.075656193888539e-8+n*r,n=n*r-2.7517406297064545e-7,n=1.8239629214389228e-8+n*r,n=15027403968909828e-22+n*r,n=n*r-4013867526981546e-21,n=29234449089955446e-22+n*r,n=12475304481671779e-21+n*r,n=n*r-47318229009055734e-21,n=6828485145957318e-20+n*r,n=24031110387097894e-21+n*r,n=n*r-.0003550375203628475,n=.0009532893797373805+n*r,n=n*r-.0016882755560235047,n=.002491442096107851+n*r,n=n*r-.003751208507569241,n=.005370914553590064+n*r,n=1.0052589676941592+n*r,n=3.0838856104922208+n*r):Number.isFinite(r)?(r=Math.sqrt(r)-5,n=-27109920616438573e-27,n=n*r-2.555641816996525e-10,n=1.5076572693500548e-9+n*r,n=n*r-3.789465440126737e-9,n=7.61570120807834e-9+n*r,n=n*r-1.496002662714924e-8,n=2.914795345090108e-8+n*r,n=n*r-6.771199775845234e-8,n=2.2900482228026655e-7+n*r,n=n*r-9.9298272942317e-7,n=4526062597223154e-21+n*r,n=n*r-1968177810553167e-20,n=7599527703001776e-20+n*r,n=n*r-.00021503011930044477,n=n*r-.00013871931833623122,n=1.0103004648645344+n*r,n=4.849906401408584+n*r):n=1/0;return n*t}(2*t-1)}function N(t,n){let r,e;const o={mean(t){return arguments.length?(r=t||0,o):r},stdev(t){return arguments.length?(e=null==t?1:t,o):e},sample:()=>m(r,e),pdf:t=>p(t,r,e),cdf:t=>g(t,r,e),icdf:t=>b(t,r,e)};return o.mean(t).stdev(n)}function v(t,n){return t=t||0,n=null==n?1:n,Math.exp(t+m()*n)}function w(t,n,r){if(t<=0)return 0;n=n||0,r=null==r?1:r;const e=(Math.log(t)-n)/r;return Math.exp(-.5*e*e)/(r*h*t)}function x(t,n,r){return g(Math.log(t),n,r)}function y(t,n,r){return Math.exp(b(t,n,r))}function q(n,r){return null==r&&(r=null==n?1:n,n=0),n+(r-n)*t.random()}function A(t,n,r){return null==r&&(r=null==n?1:n,n=0),t>=n&&t<=r?1/(r-n):0}function F(t,n,r){return null==r&&(r=null==n?1:n,n=0),t<n?0:t>r?1:(t-n)/(r-n)}function L(t,n,r){return null==r&&(r=null==n?1:n,n=0),t>=0&&t<=1?n+t*(r-n):NaN}function S(t,n,r,e){const o=e-t*t,l=Math.abs(o)<1e-24?0:(r-t*n)/o;return[n-l*t,l]}function E(t,n,r,e){t=t.filter(t=>{let e=n(t),o=r(t);return null!=e&&(e=+e)>=e&&null!=o&&(o=+o)>=o}),e&&t.sort((t,r)=>n(t)-n(r));const o=t.length,l=new Float64Array(o),u=new Float64Array(o);let f,a,i,s=0,c=0,h=0;for(i of t)l[s]=f=+n(i),u[s]=a=+r(i),++s,c+=(f-c)/s,h+=(a-h)/s;for(s=0;s<o;++s)l[s]-=c,u[s]-=h;return[l,u,c,h]}function U(t,n,r,e){let o,l,u=-1;for(const f of t)o=n(f),l=r(f),null!=o&&(o=+o)>=o&&null!=l&&(l=+l)>=l&&e(o,l,++u)}function I(t,n,r,e,o){let l=0,u=0;return U(t,n,r,(t,n)=>{const r=n-o(t),f=n-e;l+=r*r,u+=f*f}),1-l/u}function P(t,n,r){let e=0,o=0,l=0,u=0,f=0;U(t,n,r,(t,n)=>{++f,e+=(t-e)/f,o+=(n-o)/f,l+=(t*n-l)/f,u+=(t*t-u)/f});const a=S(e,o,l,u),i=t=>a[0]+a[1]*t;return{coef:a,predict:i,rSquared:I(t,n,r,o,i)}}function k(t,n,r){const[e,o,l,u]=E(t,n,r),f=e.length;let a,i,s,c,h=0,d=0,M=0,m=0,p=0;for(a=0;a<f;)i=e[a],s=o[a++],c=i*i,h+=(c-h)/a,d+=(c*i-d)/a,M+=(c*c-M)/a,m+=(i*s-m)/a,p+=(c*s-p)/a;const g=M-h*h,b=h*g-d*d,N=(p*h-m*d)/b,v=(m*g-p*d)/b,w=-N*h,x=t=>N*(t-=l)*t+v*t+w+u;return{coef:[w-v*l+N*l*l+u,v-2*N*l,N],predict:x,rSquared:I(t,n,r,u,x)}}function C(t,n,r,e){const o=Array(t);let l,u,f,a;for(l=0;l<t;++l)o[l]=0;for(l=t-1;l>=0;--l)for(f=n[l],a=1,o[l]+=f,u=1;u<=l;++u)a*=(l+1-u)/u,o[l-u]+=f*Math.pow(r,u)*a;return o[0]+=e,o}function D(t){return(t=1-t*t*t)*t*t}function R(t,n,r){const e=t[n];let o=r[0],l=r[1]+1;if(!(l>=t.length))for(;n>o&&t[l]-e<=e-t[o];)r[0]=++o,r[1]=l,++l}const K=.1*Math.PI/180;function Q(t,n,r){const e=Math.atan2(r[1]-t[1],r[0]-t[0]),o=Math.atan2(n[1]-t[1],n[0]-t[0]);return Math.abs(e-o)}return t.bandwidthNRD=c,t.bin=function(t){const n=t.maxbins||20,r=t.base||10,e=Math.log(r),o=t.divide||[5,2];let l,u,f,a,i,s,c=t.extent[0],h=t.extent[1];const d=t.span||h-c||Math.abs(c)||1;if(t.step)l=t.step;else if(t.steps){for(a=d/n,i=0,s=t.steps.length;i<s&&t.steps[i]<a;++i);l=t.steps[Math.max(0,i-1)]}else{for(u=Math.ceil(Math.log(n)/e),f=t.minstep||0,l=Math.max(f,Math.pow(r,Math.round(Math.log(d)/e)-u));Math.ceil(d/l)>n;)l*=r;for(i=0,s=o.length;i<s;++i)a=l/o[i],a>=f&&d/a<=n&&(l=a)}a=Math.log(l);const M=a>=0?0:1+~~(-a/e),m=Math.pow(r,-M-1);return(t.nice||void 0===t.nice)&&(a=Math.floor(c/l+m)*l,c=c<a?a-l:a,h=Math.ceil(h/l)*l),{start:c,stop:h===c?c+l:h,step:l}},t.bootstrapCI=function(e,o,l,u){if(!e.length)return[void 0,void 0];const f=Float64Array.from(n(e,u)),i=f.length,s=o;let c,h,d,M;for(d=0,M=Array(s);d<s;++d){for(c=0,h=0;h<i;++h)c+=f[~~(t.random()*i)];M[d]=c/i}return M.sort(r),[a(M,l/2),a(M,1-l/2)]},t.cumulativeLogNormal=x,t.cumulativeNormal=g,t.cumulativeUniform=F,t.densityLogNormal=w,t.densityNormal=p,t.densityUniform=A,t.dotbin=function(t,n,r,e){e=e||(t=>t);const o=t.length,l=new Float64Array(o);let u,f=0,a=1,i=e(t[0]),s=i,c=i+n;for(;a<o;++a){if(u=e(t[a]),u>=c){for(s=(i+s)/2;f<a;++f)l[f]=s;c=u+n,i=u}s=u}for(s=(i+s)/2;f<a;++f)l[f]=s;return r?function(t,n){const r=t.length;let e,o,l=0,u=1;for(;t[l]===t[u];)++u;for(;u<r;){for(e=u+1;t[u]===t[e];)++e;if(t[u]-t[u-1]<n){for(o=u+(l+e-u-u>>1);o<u;)t[o++]=t[u];for(;o>u;)t[o--]=t[l]}l=u,u=e}return t}(l,n+n/4):l},t.quantileLogNormal=y,t.quantileNormal=b,t.quantileUniform=L,t.quantiles=i,t.quartiles=s,t.randomInteger=function(n,r){let e,o,l;null==r&&(r=n,n=0);const u={min(t){return arguments.length?(e=t||0,l=o-e,u):e},max(t){return arguments.length?(o=t||0,l=o-e,u):o},sample:()=>e+Math.floor(l*t.random()),pdf:t=>t===Math.floor(t)&&t>=e&&t<o?1/l:0,cdf(t){const n=Math.floor(t);return n<e?0:n>=o?1:(n-e+1)/l},icdf:t=>t>=0&&t<=1?e-1+Math.floor(t*l):NaN};return u.min(n).max(r)},t.randomKDE=function(n,r){const e=N();let o=0;const l={data(t){return arguments.length?(n=t,o=t?t.length:0,l.bandwidth(r)):n},bandwidth(t){return arguments.length?(!(r=t)&&n&&(r=c(n)),l):r},sample:()=>n[~~(t.random()*o)]+r*e.sample(),pdf(t){let l=0,u=0;for(;u<o;++u)l+=e.pdf((t-n[u])/r);return l/r/o},cdf(t){let l=0,u=0;for(;u<o;++u)l+=e.cdf((t-n[u])/r);return l/o},icdf(){throw Error("KDE icdf not supported.")}};return l.data(n)},t.randomLCG=function(t){return function(){return(t=(1103515245*t+12345)%2147483647)/2147483647}},t.randomLogNormal=function(t,n){let r,e;const o={mean(t){return arguments.length?(r=t||0,o):r},stdev(t){return arguments.length?(e=null==t?1:t,o):e},sample:()=>v(r,e),pdf:t=>w(t,r,e),cdf:t=>x(t,r,e),icdf:t=>y(t,r,e)};return o.mean(t).stdev(n)},t.randomMixture=function(n,r){let e,o=0;const l={weights(t){return arguments.length?(e=function(t){const n=[];let r,e=0;for(r=0;r<o;++r)e+=n[r]=null==t[r]?1:+t[r];for(r=0;r<o;++r)n[r]/=e;return n}(r=t||[]),l):r},distributions(t){return arguments.length?(t?(o=t.length,n=t):(o=0,n=[]),l.weights(r)):n},sample(){const r=t.random();let l=n[o-1],u=e[0],f=0;for(;f<o-1;u+=e[++f])if(r<u){l=n[f];break}return l.sample()},pdf(t){let r=0,l=0;for(;l<o;++l)r+=e[l]*n[l].pdf(t);return r},cdf(t){let r=0,l=0;for(;l<o;++l)r+=e[l]*n[l].cdf(t);return r},icdf(){throw Error("Mixture icdf not supported.")}};return l.distributions(n).weights(r)},t.randomNormal=N,t.randomUniform=function(t,n){let r,e;const o={min(t){return arguments.length?(r=t||0,o):r},max(t){return arguments.length?(e=null==t?1:t,o):e},sample:()=>q(r,e),pdf:t=>A(t,r,e),cdf:t=>F(t,r,e),icdf:t=>L(t,r,e)};return null==n&&(n=null==t?1:t,t=0),o.min(t).max(n)},t.regressionExp=function(t,n,r){const[e,o,l,u]=E(t,n,r);let f,a,i,s=0,c=0,h=0,d=0,M=0;U(t,n,r,(t,n)=>{f=e[M++],a=Math.log(n),i=f*n,s+=(n*a-s)/M,c+=(i-c)/M,h+=(i*a-h)/M,d+=(f*i-d)/M});const[m,p]=S(c/u,s/u,h/u,d/u),g=t=>Math.exp(m+p*(t-l));return{coef:[Math.exp(m-p*l),p],predict:g,rSquared:I(t,n,r,u,g)}},t.regressionLinear=P,t.regressionLoess=function(t,n,r,e){const[o,l,u,f]=E(t,n,r,!0),i=o.length,s=Math.max(2,~~(e*i)),c=new Float64Array(i),h=new Float64Array(i),d=new Float64Array(i).fill(1);for(let t=-1;++t<=2;){const n=[0,s-1];for(let t=0;t<i;++t){const r=o[t],e=n[0],u=n[1],f=r-o[e]>o[u]-r?e:u;let a=0,i=0,s=0,M=0,m=0;const p=1/Math.abs(o[f]-r||1);for(let t=e;t<=u;++t){const n=o[t],e=l[t],u=D(Math.abs(r-n)*p)*d[t],f=n*u;a+=u,i+=f,s+=e*u,M+=e*f,m+=n*f}const[g,b]=S(i/a,s/a,M/a,m/a);c[t]=g+b*r,h[t]=Math.abs(l[t]-c[t]),R(o,t+1,n)}if(2===t)break;const r=a(h,.5,void 0);if(Math.abs(r)<1e-12)break;for(let t,n,e=0;e<i;++e)t=h[e]/(6*r),d[e]=t>=1?1e-12:(n=1-t*t)*n}return function(t,n,r,e){const o=t.length,l=[];let u,f=0,a=0,i=[];for(;f<o;++f)u=t[f]+r,i[0]===u?i[1]+=(n[f]-i[1])/++a:(a=0,i[1]+=e,i=[u,n[f]],l.push(i));return i[1]+=e,l}(o,c,u,f)},t.regressionLog=function(t,n,r){let e=0,o=0,l=0,u=0,f=0;U(t,n,r,(t,n)=>{++f,t=Math.log(t),e+=(t-e)/f,o+=(n-o)/f,l+=(t*n-l)/f,u+=(t*t-u)/f});const a=S(e,o,l,u),i=t=>a[0]+a[1]*Math.log(t);return{coef:a,predict:i,rSquared:I(t,n,r,o,i)}},t.regressionPoly=function(t,n,r,e){if(1===e)return P(t,n,r);if(2===e)return k(t,n,r);const[o,l,u,f]=E(t,n,r),a=o.length,i=[],s=[],c=e+1;let h,d,M,m,p;for(h=0;h<c;++h){for(M=0,m=0;M<a;++M)m+=Math.pow(o[M],h)*l[M];for(i.push(m),p=new Float64Array(c),d=0;d<c;++d){for(M=0,m=0;M<a;++M)m+=Math.pow(o[M],h+d);p[d]=m}s.push(p)}s.push(i);const g=function(t){const n=t.length-1,r=[];let e,o,l,u,f;for(e=0;e<n;++e){for(u=e,o=e+1;o<n;++o)Math.abs(t[e][o])>Math.abs(t[e][u])&&(u=o);for(l=e;l<n+1;++l)f=t[l][e],t[l][e]=t[l][u],t[l][u]=f;for(o=e+1;o<n;++o)for(l=n;l>=e;l--)t[l][o]-=t[l][e]*t[e][o]/t[e][e]}for(o=n-1;o>=0;--o){for(f=0,l=o+1;l<n;++l)f+=t[l][o]*r[l];r[o]=(t[n][o]-f)/t[o][o]}return r}(s),b=t=>{t-=u;let n=f+g[0]+g[1]*t+g[2]*t*t;for(h=3;h<c;++h)n+=g[h]*Math.pow(t,h);return n};return{coef:C(c,g,-u,f),predict:b,rSquared:I(t,n,r,f,b)}},t.regressionPow=function(t,n,r){let e=0,o=0,l=0,u=0,f=0,a=0;U(t,n,r,(t,n)=>{const r=Math.log(t),i=Math.log(n);++a,e+=(r-e)/a,o+=(i-o)/a,l+=(r*i-l)/a,u+=(r*r-u)/a,f+=(n-f)/a});const i=S(e,o,l,u),s=t=>i[0]*Math.pow(t,i[1]);return i[0]=Math.exp(i[0]),{coef:i,predict:s,rSquared:I(t,n,r,f,s)}},t.regressionQuad=k,t.sampleCurve=function(t,n,r,e){r=r||25,e=Math.max(r,e||200);const o=n=>[n,t(n)],l=n[0],u=n[1],f=u-l,a=f/e,i=[o(l)],s=[];if(r===e){for(let t=1;t<e;++t)i.push(o(l+t/r*f));return i.push(o(u)),i}s.push(o(u));for(let t=r;--t>0;)s.push(o(l+t/r*f));let c=i[0],h=s[s.length-1];for(;h;){const t=o((c[0]+h[0])/2);t[0]-c[0]>=a&&Q(c,t,h)>K?s.push(t):(c=h,i.push(h),s.pop()),h=s[s.length-1]}return i},t.sampleLogNormal=v,t.sampleNormal=m,t.sampleUniform=q,t.setRandom=function(n){t.random=n},t}({});
!function(t,n){"object"==typeof exports&&"undefined"!=typeof module?n(exports):"function"==typeof define&&define.amd?define(["exports"],n):n((t="undefined"!=typeof globalThis?globalThis:t||self).vega={})}(this,(function(t){"use strict";function*n(t,n){if(null==n)for(let n of t)null!=n&&""!==n&&(n=+n)>=n&&(yield n);else{let e=-1;for(let r of t)r=n(r,++e,t),null!=r&&""!==r&&(r=+r)>=r&&(yield r)}}function e(t,n){return t<n?-1:t>n?1:t>=n?0:NaN}function r(t){return null===t?NaN:+t}function o(t,n){let e;if(void 0===n)for(const n of t)null!=n&&(e<n||void 0===e&&n>=n)&&(e=n);else{let r=-1;for(let o of t)null!=(o=n(o,++r,t))&&(e<o||void 0===e&&o>=o)&&(e=o)}return e}function l(t,n){let e;if(void 0===n)for(const n of t)null!=n&&(e>n||void 0===e&&n>=n)&&(e=n);else{let r=-1;for(let o of t)null!=(o=n(o,++r,t))&&(e>o||void 0===e&&o>=o)&&(e=o)}return e}function u(t,n,r=0,o=t.length-1,l=e){for(;o>r;){if(o-r>600){const e=o-r+1,f=n-r+1,a=Math.log(e),i=.5*Math.exp(2*a/3),s=.5*Math.sqrt(a*i*(e-i)/e)*(f-e/2<0?-1:1);u(t,n,Math.max(r,Math.floor(n-f*i/e+s)),Math.min(o,Math.floor(n+(e-f)*i/e+s)),l)}const e=t[n];let a=r,i=o;for(f(t,r,n),l(t[o],e)>0&&f(t,r,o);a<i;){for(f(t,a,i),++a,--i;l(t[a],e)<0;)++a;for(;l(t[i],e)>0;)--i}0===l(t[r],e)?f(t,r,i):(++i,f(t,i,o)),i<=n&&(r=i+1),n<=i&&(o=i-1)}return t}function f(t,n,e){const r=t[n];t[n]=t[e],t[e]=r}function a(t,n,e){if(t=Float64Array.from(function*(t,n){if(void 0===n)for(let n of t)null!=n&&(n=+n)>=n&&(yield n);else{let e=-1;for(let r of t)null!=(r=n(r,++e,t))&&(r=+r)>=r&&(yield r)}}(t,e)),r=t.length){if((n=+n)<=0||r<2)return l(t);if(n>=1)return o(t);var r,f=(r-1)*n,a=Math.floor(f),i=o(u(t,a).subarray(0,a+1));return i+(l(t.subarray(a+1))-i)*(f-a)}}function i(t,o,l){const u=Float64Array.from(n(t,l));return u.sort(e),o.map((t=>function(t,n,e=r){if(o=t.length){if((n=+n)<=0||o<2)return+e(t[0],0,t);if(n>=1)return+e(t[o-1],o-1,t);var o,l=(o-1)*n,u=Math.floor(l),f=+e(t[u],u,t);return f+(+e(t[u+1],u+1,t)-f)*(l-u)}}(u,t)))}function s(t,n){return i(t,[.25,.5,.75],n)}function c(t,n){const e=t.length,r=function(t,n){const e=function(t,n){let e,r=0,o=0,l=0;if(void 0===n)for(let n of t)null!=n&&(n=+n)>=n&&(e=n-o,o+=e/++r,l+=e*(n-o));else{let u=-1;for(let f of t)null!=(f=n(f,++u,t))&&(f=+f)>=f&&(e=f-o,o+=e/++r,l+=e*(f-o))}if(r>1)return l/(r-1)}(t,n);return e?Math.sqrt(e):e}(t,n),o=s(t,n),l=(o[2]-o[0])/1.34;return 1.06*(Math.min(r,l)||r||Math.abs(o[0])||1)*Math.pow(e,-.2)}t.random=Math.random;const h=Math.sqrt(2*Math.PI),d=Math.SQRT2;let p=NaN;function M(n,e){n=n||0,e=null==e?1:e;let r,o,l=0,u=0;if(p==p)l=p,p=NaN;else{do{l=2*t.random()-1,u=2*t.random()-1,r=l*l+u*u}while(0===r||r>1);o=Math.sqrt(-2*Math.log(r)/r),l*=o,p=u*o}return n+l*e}function m(t,n,e){const r=(t-(n||0))/(e=null==e?1:e);return Math.exp(-.5*r*r)/(e*h)}function g(t,n,e){const r=(t-(n=n||0))/(e=null==e?1:e),o=Math.abs(r);let l;if(o>37)l=0;else{const t=Math.exp(-o*o/2);let n;o<7.07106781186547?(n=.0352624965998911*o+.700383064443688,n=n*o+6.37396220353165,n=n*o+33.912866078383,n=n*o+112.079291497871,n=n*o+221.213596169931,n=n*o+220.206867912376,l=t*n,n=.0883883476483184*o+1.75566716318264,n=n*o+16.064177579207,n=n*o+86.7807322029461,n=n*o+296.564248779674,n=n*o+637.333633378831,n=n*o+793.826512519948,n=n*o+440.413735824752,l/=n):(n=o+.65,n=o+4/n,n=o+3/n,n=o+2/n,n=o+1/n,l=t/n/2.506628274631)}return r>0?1-l:l}function b(t,n,e){return t<0||t>1?NaN:(n||0)+(null==e?1:e)*d*function(t){let n,e=-Math.log((1-t)*(1+t));e<6.25?(e-=3.125,n=-364441206401782e-35,n=n*e-16850591381820166e-35,n=128584807152564e-32+n*e,n=11157877678025181e-33+n*e,n=n*e-1333171662854621e-31,n=20972767875968562e-33+n*e,n=6637638134358324e-30+n*e,n=n*e-4054566272975207e-29,n=n*e-8151934197605472e-29,n=26335093153082323e-28+n*e,n=n*e-12975133253453532e-27,n=n*e-5415412054294628e-26,n=1.0512122733215323e-9+n*e,n=n*e-4.112633980346984e-9,n=n*e-2.9070369957882005e-8,n=4.2347877827932404e-7+n*e,n=n*e-13654692000834679e-22,n=n*e-13882523362786469e-21,n=.00018673420803405714+n*e,n=n*e-.000740702534166267,n=n*e-.006033670871430149,n=.24015818242558962+n*e,n=1.6536545626831027+n*e):e<16?(e=Math.sqrt(e)-3.25,n=2.2137376921775787e-9,n=9.075656193888539e-8+n*e,n=n*e-2.7517406297064545e-7,n=1.8239629214389228e-8+n*e,n=15027403968909828e-22+n*e,n=n*e-4013867526981546e-21,n=29234449089955446e-22+n*e,n=12475304481671779e-21+n*e,n=n*e-47318229009055734e-21,n=6828485145957318e-20+n*e,n=24031110387097894e-21+n*e,n=n*e-.0003550375203628475,n=.0009532893797373805+n*e,n=n*e-.0016882755560235047,n=.002491442096107851+n*e,n=n*e-.003751208507569241,n=.005370914553590064+n*e,n=1.0052589676941592+n*e,n=3.0838856104922208+n*e):Number.isFinite(e)?(e=Math.sqrt(e)-5,n=-27109920616438573e-27,n=n*e-2.555641816996525e-10,n=1.5076572693500548e-9+n*e,n=n*e-3.789465440126737e-9,n=7.61570120807834e-9+n*e,n=n*e-1.496002662714924e-8,n=2.914795345090108e-8+n*e,n=n*e-6.771199775845234e-8,n=2.2900482228026655e-7+n*e,n=n*e-9.9298272942317e-7,n=4526062597223154e-21+n*e,n=n*e-1968177810553167e-20,n=7599527703001776e-20+n*e,n=n*e-.00021503011930044477,n=n*e-.00013871931833623122,n=1.0103004648645344+n*e,n=4.849906401408584+n*e):n=1/0;return n*t}(2*t-1)}function x(t,n){let e,r;const o={mean(t){return arguments.length?(e=t||0,o):e},stdev(t){return arguments.length?(r=null==t?1:t,o):r},sample:()=>M(e,r),pdf:t=>m(t,e,r),cdf:t=>g(t,e,r),icdf:t=>b(t,e,r)};return o.mean(t).stdev(n)}function y(t,n){return t=t||0,n=null==n?1:n,Math.exp(t+M()*n)}function N(t,n,e){if(t<=0)return 0;n=n||0,e=null==e?1:e;const r=(Math.log(t)-n)/e;return Math.exp(-.5*r*r)/(e*h*t)}function v(t,n,e){return g(Math.log(t),n,e)}function w(t,n,e){return Math.exp(b(t,n,e))}function q(n,e){return null==e&&(e=null==n?1:n,n=0),n+(e-n)*t.random()}function A(t,n,e){return null==e&&(e=null==n?1:n,n=0),t>=n&&t<=e?1/(e-n):0}function F(t,n,e){return null==e&&(e=null==n?1:n,n=0),t<n?0:t>e?1:(t-n)/(e-n)}function L(t,n,e){return null==e&&(e=null==n?1:n,n=0),t>=0&&t<=1?n+t*(e-n):NaN}function S(t,n,e,r){const o=r-t*t,l=Math.abs(o)<1e-24?0:(e-t*n)/o;return[n-l*t,l]}function E(t,n,e,r){t=t.filter((t=>{let r=n(t),o=e(t);return null!=r&&(r=+r)>=r&&null!=o&&(o=+o)>=o})),r&&t.sort(((t,e)=>n(t)-n(e)));const o=t.length,l=new Float64Array(o),u=new Float64Array(o);let f,a,i,s=0,c=0,h=0;for(i of t)l[s]=f=+n(i),u[s]=a=+e(i),++s,c+=(f-c)/s,h+=(a-h)/s;for(s=0;s<o;++s)l[s]-=c,u[s]-=h;return[l,u,c,h]}function P(t,n,e,r){let o,l,u=-1;for(const f of t)o=n(f),l=e(f),null!=o&&(o=+o)>=o&&null!=l&&(l=+l)>=l&&r(o,l,++u)}function U(t,n,e,r,o){let l=0,u=0;return P(t,n,e,((t,n)=>{const e=n-o(t),f=n-r;l+=e*e,u+=f*f})),1-l/u}function I(t,n,e){let r=0,o=0,l=0,u=0,f=0;P(t,n,e,((t,n)=>{++f,r+=(t-r)/f,o+=(n-o)/f,l+=(t*n-l)/f,u+=(t*t-u)/f}));const a=S(r,o,l,u),i=t=>a[0]+a[1]*t;return{coef:a,predict:i,rSquared:U(t,n,e,o,i)}}function k(t,n,e){const[r,o,l,u]=E(t,n,e),f=r.length;let a,i,s,c,h=0,d=0,p=0,M=0,m=0;for(a=0;a<f;)i=r[a],s=o[a++],c=i*i,h+=(c-h)/a,d+=(c*i-d)/a,p+=(c*c-p)/a,M+=(i*s-M)/a,m+=(c*s-m)/a;const g=p-h*h,b=h*g-d*d,x=(m*h-M*d)/b,y=(M*g-m*d)/b,N=-x*h,v=t=>x*(t-=l)*t+y*t+N+u;return{coef:[N-y*l+x*l*l+u,y-2*x*l,x],predict:v,rSquared:U(t,n,e,u,v)}}function C(t,n,e,r){const o=Array(t);let l,u,f,a;for(l=0;l<t;++l)o[l]=0;for(l=t-1;l>=0;--l)for(f=n[l],a=1,o[l]+=f,u=1;u<=l;++u)a*=(l+1-u)/u,o[l-u]+=f*Math.pow(e,u)*a;return o[0]+=r,o}function D(t){return(t=1-t*t*t)*t*t}function R(t,n,e){const r=t[n];let o=e[0],l=e[1]+1;if(!(l>=t.length))for(;n>o&&t[l]-r<=r-t[o];)e[0]=++o,e[1]=l,++l}const T=.5*Math.PI/180;function j(t,n,e,r,o){const l=Math.atan2(o*(e[1]-t[1]),r*(e[0]-t[0])),u=Math.atan2(o*(n[1]-t[1]),r*(n[0]-t[0]));return Math.abs(l-u)}t.bandwidthNRD=c,t.bin=function(t){const n=t.maxbins||20,e=t.base||10,r=Math.log(e),o=t.divide||[5,2];let l,u,f,a,i,s,c=t.extent[0],h=t.extent[1];const d=t.span||h-c||Math.abs(c)||1;if(t.step)l=t.step;else if(t.steps){for(a=d/n,i=0,s=t.steps.length;i<s&&t.steps[i]<a;++i);l=t.steps[Math.max(0,i-1)]}else{for(u=Math.ceil(Math.log(n)/r),f=t.minstep||0,l=Math.max(f,Math.pow(e,Math.round(Math.log(d)/r)-u));Math.ceil(d/l)>n;)l*=e;for(i=0,s=o.length;i<s;++i)a=l/o[i],a>=f&&d/a<=n&&(l=a)}a=Math.log(l);const p=a>=0?0:1+~~(-a/r),M=Math.pow(e,-p-1);return(t.nice||void 0===t.nice)&&(a=Math.floor(c/l+M)*l,c=c<a?a-l:a,h=Math.ceil(h/l)*l),{start:c,stop:h===c?c+l:h,step:l}},t.bootstrapCI=function(r,o,l,u){if(!r.length)return[void 0,void 0];const f=Float64Array.from(n(r,u)),i=f.length,s=o;let c,h,d,p;for(d=0,p=Array(s);d<s;++d){for(c=0,h=0;h<i;++h)c+=f[~~(t.random()*i)];p[d]=c/i}return p.sort(e),[a(p,l/2),a(p,1-l/2)]},t.cumulativeLogNormal=v,t.cumulativeNormal=g,t.cumulativeUniform=F,t.densityLogNormal=N,t.densityNormal=m,t.densityUniform=A,t.dotbin=function(t,n,e,r){r=r||(t=>t);const o=t.length,l=new Float64Array(o);let u,f=0,a=1,i=r(t[0]),s=i,c=i+n;for(;a<o;++a){if(u=r(t[a]),u>=c){for(s=(i+s)/2;f<a;++f)l[f]=s;c=u+n,i=u}s=u}for(s=(i+s)/2;f<a;++f)l[f]=s;return e?function(t,n){const e=t.length;let r,o,l=0,u=1;for(;t[l]===t[u];)++u;for(;u<e;){for(r=u+1;t[u]===t[r];)++r;if(t[u]-t[u-1]<n){for(o=u+(l+r-u-u>>1);o<u;)t[o++]=t[u];for(;o>u;)t[o--]=t[l]}l=u,u=r}return t}(l,n+n/4):l},t.quantileLogNormal=w,t.quantileNormal=b,t.quantileUniform=L,t.quantiles=i,t.quartiles=s,t.randomInteger=function(n,e){let r,o,l;null==e&&(e=n,n=0);const u={min(t){return arguments.length?(r=t||0,l=o-r,u):r},max(t){return arguments.length?(o=t||0,l=o-r,u):o},sample:()=>r+Math.floor(l*t.random()),pdf:t=>t===Math.floor(t)&&t>=r&&t<o?1/l:0,cdf(t){const n=Math.floor(t);return n<r?0:n>=o?1:(n-r+1)/l},icdf:t=>t>=0&&t<=1?r-1+Math.floor(t*l):NaN};return u.min(n).max(e)},t.randomKDE=function(n,e){const r=x();let o=0;const l={data(t){return arguments.length?(n=t,o=t?t.length:0,l.bandwidth(e)):n},bandwidth(t){return arguments.length?(!(e=t)&&n&&(e=c(n)),l):e},sample:()=>n[~~(t.random()*o)]+e*r.sample(),pdf(t){let l=0,u=0;for(;u<o;++u)l+=r.pdf((t-n[u])/e);return l/e/o},cdf(t){let l=0,u=0;for(;u<o;++u)l+=r.cdf((t-n[u])/e);return l/o},icdf(){throw Error("KDE icdf not supported.")}};return l.data(n)},t.randomLCG=function(t){return function(){return(t=(1103515245*t+12345)%2147483647)/2147483647}},t.randomLogNormal=function(t,n){let e,r;const o={mean(t){return arguments.length?(e=t||0,o):e},stdev(t){return arguments.length?(r=null==t?1:t,o):r},sample:()=>y(e,r),pdf:t=>N(t,e,r),cdf:t=>v(t,e,r),icdf:t=>w(t,e,r)};return o.mean(t).stdev(n)},t.randomMixture=function(n,e){let r,o=0;const l={weights(t){return arguments.length?(r=function(t){const n=[];let e,r=0;for(e=0;e<o;++e)r+=n[e]=null==t[e]?1:+t[e];for(e=0;e<o;++e)n[e]/=r;return n}(e=t||[]),l):e},distributions(t){return arguments.length?(t?(o=t.length,n=t):(o=0,n=[]),l.weights(e)):n},sample(){const e=t.random();let l=n[o-1],u=r[0],f=0;for(;f<o-1;u+=r[++f])if(e<u){l=n[f];break}return l.sample()},pdf(t){let e=0,l=0;for(;l<o;++l)e+=r[l]*n[l].pdf(t);return e},cdf(t){let e=0,l=0;for(;l<o;++l)e+=r[l]*n[l].cdf(t);return e},icdf(){throw Error("Mixture icdf not supported.")}};return l.distributions(n).weights(e)},t.randomNormal=x,t.randomUniform=function(t,n){let e,r;const o={min(t){return arguments.length?(e=t||0,o):e},max(t){return arguments.length?(r=null==t?1:t,o):r},sample:()=>q(e,r),pdf:t=>A(t,e,r),cdf:t=>F(t,e,r),icdf:t=>L(t,e,r)};return null==n&&(n=null==t?1:t,t=0),o.min(t).max(n)},t.regressionExp=function(t,n,e){const[r,o,l,u]=E(t,n,e);let f,a,i,s=0,c=0,h=0,d=0,p=0;P(t,n,e,((t,n)=>{f=r[p++],a=Math.log(n),i=f*n,s+=(n*a-s)/p,c+=(i-c)/p,h+=(i*a-h)/p,d+=(f*i-d)/p}));const[M,m]=S(c/u,s/u,h/u,d/u),g=t=>Math.exp(M+m*(t-l));return{coef:[Math.exp(M-m*l),m],predict:g,rSquared:U(t,n,e,u,g)}},t.regressionLinear=I,t.regressionLoess=function(t,n,e,r){const[o,l,u,f]=E(t,n,e,!0),i=o.length,s=Math.max(2,~~(r*i)),c=new Float64Array(i),h=new Float64Array(i),d=new Float64Array(i).fill(1);for(let t=-1;++t<=2;){const n=[0,s-1];for(let t=0;t<i;++t){const e=o[t],r=n[0],u=n[1],f=e-o[r]>o[u]-e?r:u;let a=0,i=0,s=0,p=0,M=0;const m=1/Math.abs(o[f]-e||1);for(let t=r;t<=u;++t){const n=o[t],r=l[t],u=D(Math.abs(e-n)*m)*d[t],f=n*u;a+=u,i+=f,s+=r*u,p+=r*f,M+=n*f}const[g,b]=S(i/a,s/a,p/a,M/a);c[t]=g+b*e,h[t]=Math.abs(l[t]-c[t]),R(o,t+1,n)}if(2===t)break;const e=a(h,.5,void 0);if(Math.abs(e)<1e-12)break;for(let t,n,r=0;r<i;++r)t=h[r]/(6*e),d[r]=t>=1?1e-12:(n=1-t*t)*n}return function(t,n,e,r){const o=t.length,l=[];let u,f=0,a=0,i=[];for(;f<o;++f)u=t[f]+e,i[0]===u?i[1]+=(n[f]-i[1])/++a:(a=0,i[1]+=r,i=[u,n[f]],l.push(i));return i[1]+=r,l}(o,c,u,f)},t.regressionLog=function(t,n,e){let r=0,o=0,l=0,u=0,f=0;P(t,n,e,((t,n)=>{++f,t=Math.log(t),r+=(t-r)/f,o+=(n-o)/f,l+=(t*n-l)/f,u+=(t*t-u)/f}));const a=S(r,o,l,u),i=t=>a[0]+a[1]*Math.log(t);return{coef:a,predict:i,rSquared:U(t,n,e,o,i)}},t.regressionPoly=function(t,n,e,r){if(1===r)return I(t,n,e);if(2===r)return k(t,n,e);const[o,l,u,f]=E(t,n,e),a=o.length,i=[],s=[],c=r+1;let h,d,p,M,m;for(h=0;h<c;++h){for(p=0,M=0;p<a;++p)M+=Math.pow(o[p],h)*l[p];for(i.push(M),m=new Float64Array(c),d=0;d<c;++d){for(p=0,M=0;p<a;++p)M+=Math.pow(o[p],h+d);m[d]=M}s.push(m)}s.push(i);const g=function(t){const n=t.length-1,e=[];let r,o,l,u,f;for(r=0;r<n;++r){for(u=r,o=r+1;o<n;++o)Math.abs(t[r][o])>Math.abs(t[r][u])&&(u=o);for(l=r;l<n+1;++l)f=t[l][r],t[l][r]=t[l][u],t[l][u]=f;for(o=r+1;o<n;++o)for(l=n;l>=r;l--)t[l][o]-=t[l][r]*t[r][o]/t[r][r]}for(o=n-1;o>=0;--o){for(f=0,l=o+1;l<n;++l)f+=t[l][o]*e[l];e[o]=(t[n][o]-f)/t[o][o]}return e}(s),b=t=>{t-=u;let n=f+g[0]+g[1]*t+g[2]*t*t;for(h=3;h<c;++h)n+=g[h]*Math.pow(t,h);return n};return{coef:C(c,g,-u,f),predict:b,rSquared:U(t,n,e,f,b)}},t.regressionPow=function(t,n,e){let r=0,o=0,l=0,u=0,f=0,a=0;P(t,n,e,((t,n)=>{const e=Math.log(t),i=Math.log(n);++a,r+=(e-r)/a,o+=(i-o)/a,l+=(e*i-l)/a,u+=(e*e-u)/a,f+=(n-f)/a}));const i=S(r,o,l,u),s=t=>i[0]*Math.pow(t,i[1]);return i[0]=Math.exp(i[0]),{coef:i,predict:s,rSquared:U(t,n,e,f,s)}},t.regressionQuad=k,t.sampleCurve=function(t,n,e,r){e=e||25,r=Math.max(e,r||200);const o=n=>[n,t(n)],l=n[0],u=n[1],f=u-l,a=f/r,i=[o(l)],s=[];if(e===r){for(let t=1;t<r;++t)i.push(o(l+t/e*f));return i.push(o(u)),i}s.push(o(u));for(let t=e;--t>0;)s.push(o(l+t/e*f));let c=i[0],h=s[s.length-1];const d=1/f,p=function(t,n){let e=t,r=t;const o=n.length;for(let t=0;t<o;++t){const o=n[t][1];o<e&&(e=o),o>r&&(r=o)}return 1/(r-e)}(c[1],s);for(;h;){const t=o((c[0]+h[0])/2);t[0]-c[0]>=a&&j(c,t,h,d,p)>T?s.push(t):(c=h,i.push(h),s.pop()),h=s[s.length-1]}return i},t.sampleLogNormal=y,t.sampleNormal=M,t.sampleUniform=q,t.setRandom=function(n){t.random=n},Object.defineProperty(t,"__esModule",{value:!0})}));
//# sourceMappingURL=vega-statistics.min.js.map

@@ -1184,4 +1184,4 @@ import { ascending, quantileSorted, deviation, quantile, median } from 'd3-array';

// subdivide up to accuracy of 0.1 degrees
const MIN_RADIANS = 0.1 * Math.PI / 180; // Adaptively sample an interpolated function over a domain extent
// subdivide up to accuracy of 0.5 degrees
const MIN_RADIANS = 0.5 * Math.PI / 180; // Adaptively sample an interpolated function over a domain extent

@@ -1218,4 +1218,6 @@ function sampleCurve (f, extent, minSteps, maxSteps) {

let p0 = prev[0],
p1 = next[next.length - 1];
let p0 = prev[0];
let p1 = next[next.length - 1];
const sx = 1 / span;
const sy = scaleY(p0[1], next);

@@ -1225,6 +1227,7 @@ while (p1) {

const pm = point((p0[0] + p1[0]) / 2);
const dx = pm[0] - p0[0] >= stop;
if (pm[0] - p0[0] >= stop && angleDelta(p0, pm, p1) > MIN_RADIANS) {
if (dx && angleDelta(p0, pm, p1, sx, sy) > MIN_RADIANS) {
// maximum resolution has not yet been met, and
// subdivision midpoint sufficiently different from endpoint
// subdivision midpoint is sufficiently different from endpoint
// save subdivision, push midpoint onto the visitation stack

@@ -1246,5 +1249,19 @@ next.push(pm);

function angleDelta(p, q, r) {
const a0 = Math.atan2(r[1] - p[1], r[0] - p[0]),
a1 = Math.atan2(q[1] - p[1], q[0] - p[0]);
function scaleY(init, points) {
let ymin = init;
let ymax = init;
const n = points.length;
for (let i = 0; i < n; ++i) {
const y = points[i][1];
if (y < ymin) ymin = y;
if (y > ymax) ymax = y;
}
return 1 / (ymax - ymin);
}
function angleDelta(p, q, r, sx, sy) {
const a0 = Math.atan2(sy * (r[1] - p[1]), sx * (r[0] - p[0])),
a1 = Math.atan2(sy * (q[1] - p[1]), sx * (q[0] - p[0]));
return Math.abs(a0 - a1);

@@ -1251,0 +1268,0 @@ }

{
"name": "vega-statistics",
"version": "1.7.9",
"version": "1.7.10",
"description": "Statistical routines and probability distributions.",

@@ -27,3 +27,3 @@ "keywords": [

},
"gitHead": "4affcbedb9d14815dbb6d3b250ed231b54fc95c0"
"gitHead": "774165e29850b66ec8b79ba52a7955f1ab936ea6"
}

@@ -266,3 +266,3 @@ # vega-statistics

- _base_: The number base to use for automatic bin determination (default base `10`).
- _maxbins_: The maximum number of allowable bins (default `20`).
- _maxbins_: The maximum number of allowable bins (default `20`). There will often be fewer bins as the domain gets sliced at "nicely" rounded values.
- _span_: The value span over which to generate bin boundaries. The default is `extent[1] - extent[0]`. This parameter allows automatic step size determination over custom spans (for example, a zoomed-in region) while retaining the overall _extent_.

@@ -269,0 +269,0 @@ - _step_: An exact step size to use between bins. If provided, the _maxbins_, _span_, and _steps_ options will be ignored.

@@ -1,3 +0,3 @@

// subdivide up to accuracy of 0.1 degrees
const MIN_RADIANS = 0.1 * Math.PI / 180;
// subdivide up to accuracy of 0.5 degrees
const MIN_RADIANS = 0.5 * Math.PI / 180;

@@ -33,12 +33,16 @@ // Adaptively sample an interpolated function over a domain extent

let p0 = prev[0],
p1 = next[next.length - 1];
let p0 = prev[0];
let p1 = next[next.length - 1];
const sx = 1 / span;
const sy = scaleY(p0[1], next);
while (p1) {
// midpoint for potential curve subdivision
const pm = point((p0[0] + p1[0]) / 2);
const dx = pm[0] - p0[0] >= stop;
if (pm[0] - p0[0] >= stop && angleDelta(p0, pm, p1) > MIN_RADIANS) {
if (dx && angleDelta(p0, pm, p1, sx, sy) > MIN_RADIANS) {
// maximum resolution has not yet been met, and
// subdivision midpoint sufficiently different from endpoint
// subdivision midpoint is sufficiently different from endpoint
// save subdivision, push midpoint onto the visitation stack

@@ -59,6 +63,20 @@ next.push(pm);

function angleDelta(p, q, r) {
const a0 = Math.atan2(r[1] - p[1], r[0] - p[0]),
a1 = Math.atan2(q[1] - p[1], q[0] - p[0]);
function scaleY(init, points) {
let ymin = init;
let ymax = init;
const n = points.length;
for (let i = 0; i < n; ++i) {
const y = points[i][1];
if (y < ymin) ymin = y;
if (y > ymax) ymax = y;
}
return 1 / (ymax - ymin);
}
function angleDelta(p, q, r, sx, sy) {
const a0 = Math.atan2(sy * (r[1] - p[1]), sx * (r[0] - p[0])),
a1 = Math.atan2(sy * (q[1] - p[1]), sx * (q[0] - p[0]));
return Math.abs(a0 - a1);
}

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

SocketSocket SOC 2 Logo

Product

  • Package Alerts
  • Integrations
  • Docs
  • Pricing
  • FAQ
  • Roadmap
  • Changelog

Packages

npm

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc