UNPKG

highcharts

Version:
10 lines 4.46 kB
/** * Highcharts JS v12.4.0 (2025-09-04) * @module highcharts/modules/histogram-bellcurve * @requires highcharts * * (c) 2010-2025 Highsoft AS * Author: Sebastian Domas * * License: www.highcharts.com/license */import*as e from"../highcharts.js";var t,s={};s.n=e=>{var t=e&&e.__esModule?()=>e.default:()=>e;return s.d(t,{a:t}),t},s.d=(e,t)=>{for(var i in t)s.o(t,i)&&!s.o(e,i)&&Object.defineProperty(e,i,{enumerable:!0,get:t[i]})},s.o=(e,t)=>Object.prototype.hasOwnProperty.call(e,t);let i=e.default;var a=s.n(i);let r=e.default.Series;var n=s.n(r);let{noop:o}=a(),{addEvent:l,defined:h}=a();!function(e){function t(){n().prototype.init.apply(this,arguments),this.initialised=!1,this.baseSeries=null,this.eventRemovers=[],this.addEvents()}function s(){let e=this.chart,t=this.options.baseSeries,s=h(t)&&(e.series[t]||e.get(t));this.baseSeries=s||null}function i(){this.eventRemovers.push(l(this.chart,"afterLinkSeries",()=>{this.setBaseSeries(),this.baseSeries&&!this.initialised&&(this.setDerivedData(),this.addBaseSeriesEvents(),this.initialised=!0)}))}function a(){this.eventRemovers.push(l(this.baseSeries,"updatedData",()=>{this.setDerivedData()}),l(this.baseSeries,"destroy",()=>{this.baseSeries=null,this.initialised=!1}))}function r(){this.eventRemovers.forEach(e=>{e()}),n().prototype.destroy.apply(this,arguments)}e.hasDerivedData=!0,e.setDerivedData=o,e.compose=function(e){let n=e.prototype;return n.addBaseSeriesEvents=a,n.addEvents=i,n.destroy=r,n.init=t,n.setBaseSeries=s,e},e.init=t,e.setBaseSeries=s,e.addEvents=i,e.addBaseSeriesEvents=a,e.destroy=r}(t||(t={}));let d=t,u=e.default.SeriesRegistry;var p=s.n(u);let{column:v}=p().seriesTypes,{arrayMax:c,arrayMin:m,correctFloat:f,isNumber:b,merge:D}=a(),g={"square-root":function(e){return Math.ceil(Math.sqrt(e.length))},sturges:function(e){return Math.ceil(Math.log(e.length)*Math.LOG2E)},rice:function(e){return Math.ceil(2*Math.pow(e.length,1/3))}};class y extends v{binsNumber(e){let t=this.options.binsNumber,s=g[t]||"function"==typeof t&&t;return Math.ceil(s&&s(e)||(b(t)?t:g["square-root"](e)))}setData(e,t=!0,s,i){let a;void 0!==e&&e.length>0&&(a=this.derivedData(e.filter(b),this.binsNumber(e),this.options.binWidth)),super.setData.call(this,a,t,s,i)}derivedData(e,t,s){var i;let a,r=f(c(e)),n=f(m(e)),o=[],l={},h=[];for(s=this.binWidth=f(b(s)?s||1:(r-n)/t),this.options.pointRange=Math.max(s,0),a=n;a<r&&(this.userOptions.binWidth||f(r-a)>=s||0>=f(f(n+o.length*s)-a));a=f(a+s))o.push(a),l[a]=0;0!==l[n]&&(o.push(n),l[n]=0);let d=(i=o.map(e=>parseFloat(e)),function(e){let t=1;for(;i[t]<=e;)t++;return i[--t]});for(let t of e)l[f(d(t))]++;for(let e of Object.keys(l))h.push({x:Number(e),y:l[e],x2:f(Number(e)+s)});return h.sort((e,t)=>e.x-t.x),h[h.length-1].x2=r,h}setDerivedData(){let e=this.baseSeries?.getColumn("y");if(!e?.length)return void this.setData([]);this.setData(e,!1,void 0,!1)}}y.defaultOptions=D(v.defaultOptions,{binsNumber:"square-root",binWidth:void 0,pointPadding:0,groupPadding:0,grouping:!1,pointPlacement:"between",tooltip:{headerFormat:"",pointFormat:'<span style="font-size: 0.8em">{point.x} - {point.x2}</span><br/><span style="color:{point.color}">●</span> {series.name} <b>{point.y}</b><br/>'}}),d.compose(y),p().registerSeriesType("histogram",y);let{areaspline:S}=p().seriesTypes,{correctFloat:M,isNumber:x,merge:O}=a();class E extends S{static mean(e){let t=e.length,s=e.reduce(function(e,t){return e+t},0);return t>0&&s/t}static standardDeviation(e,t){let s=e.length;t=x(t)?t:E.mean(e);let i=e.reduce((e,s)=>{let i=s-t;return e+i*i},0);return s>1&&Math.sqrt(i/(s-1))}static normalDensity(e,t,s){let i=e-t;return Math.exp(-(i*i)/(2*s*s))/(s*Math.sqrt(2*Math.PI))}setData(e,t=!0,s,i){let a;void 0!==e&&e.length>0&&(e=e.filter(x),this.setMean(e),this.setStandardDeviation(e),a=this.derivedData(this.mean||0,this.standardDeviation||0)),super.setData.call(this,a,t,s,i)}derivedData(e,t){let s=this.options,i=s.intervals,a=s.pointsInInterval,r=i*a*2+1,n=t/a,o=[],l=e-i*t;for(let s=0;s<r;s++)o.push([l,E.normalDensity(l,e,t)]),l+=n;return o}setDerivedData(){this.baseSeries?.getColumn("y").length&&this.setData(this.baseSeries?.getColumn("y"),!1,void 0,!1)}setMean(e){this.mean=M(E.mean(e||[]))}setStandardDeviation(e){this.standardDeviation=M(E.standardDeviation(e||[],this.mean))}}E.defaultOptions=O(S.defaultOptions,{intervals:3,pointsInInterval:3,marker:{enabled:!1}}),d.compose(E),p().registerSeriesType("bellcurve",E);let N=a();export{N as default};