highcharts
Version:
JavaScript charting framework
11 lines • 5.18 kB
JavaScript
/**
* Highcharts JS v13.0.1 (2026-08-17)
* @module highcharts/modules/histogram-bellcurve
* @requires highcharts
*
* (c) 2010-2026 Highsoft AS
* Author: Sebastian Domas
*
* A commercial license may be required depending on use,
* see www.highcharts.com/license
*/import*as e from"../highcharts.js";let t={};t.n=e=>{let s=e&&e.__esModule?()=>e.default:()=>e;return t.d(s,{a:s}),s},t.d=(e,s)=>{if(Array.isArray(s))for(var i=0;i<s.length;){var r=s[i++],a=s[i++];t.o(e,r)?0===a&&i++:0===a?Object.defineProperty(e,r,{enumerable:!0,value:s[i++]}):Object.defineProperty(e,r,{enumerable:!0,get:a})}else for(var r in s)t.o(s,r)&&!t.o(e,r)&&Object.defineProperty(e,r,{enumerable:!0,get:s[r]})},t.o=(e,t)=>Object.prototype.hasOwnProperty.call(e,t);let s=e.default;var i,r=t.n(s);let a=e.default.Series;var n=t.n(a);let{noop:o}=r();!function(e){function t(){n().prototype.init.apply(this,arguments),this.initialised=!1,this.baseSeries=null,this.eventRemovers=[],this.addEvents()}function i(){let e=this.chart,t=this.options.baseSeries,i=(0,s.defined)(t)&&(e.series[t]||e.get(t));this.baseSeries=i||null}function r(){this.eventRemovers.push((0,s.addEvent)(this.chart,"afterLinkSeries",()=>{this.setBaseSeries(),this.baseSeries&&!this.initialised&&(this.setDerivedData(),this.addBaseSeriesEvents(),this.initialised=!0)}))}function a(){this.eventRemovers.push((0,s.addEvent)(this.baseSeries,"updatedData",()=>{this.setDerivedData()}),(0,s.addEvent)(this.baseSeries,"destroy",()=>{this.baseSeries=null,this.initialised=!1}))}function l(){this.eventRemovers.forEach(e=>{e()}),n().prototype.destroy.apply(this,arguments)}e.hasDerivedData=!0,e.setDerivedData=o,e.compose=function(e){let s=e.prototype;return s.addBaseSeriesEvents=a,s.addEvents=r,s.destroy=l,s.init=t,s.setBaseSeries=i,e},e.init=t,e.setBaseSeries=i,e.addEvents=r,e.addBaseSeriesEvents=a,e.destroy=l}(i||(i={}));let l=i,h=e.default.SeriesRegistry;var d=t.n(h);let{column:u}=d().seriesTypes,c={"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 p extends u{binsNumber(e){let t=this.options.binsNumber,i=c[t]||"function"==typeof t&&t;return Math.ceil(i&&i(e)||((0,s.isNumber)(t)?t:c["square-root"](e)))}setData(e,t=!0,i,r){let a=[];void 0!==e&&e.length>0&&(e=e.map(function(e){return(0,s.isNumber)(e)?e:e?.y??0}),a=this.derivedData(e.filter(s.isNumber),this.binsNumber(e),this.options.binWidth)),super.setData.call(this,a,t,i,r)}derivedData(e,t,i){var r;let a,n=(0,s.correctFloat)((0,s.arrayMax)(e)),o=(0,s.correctFloat)((0,s.arrayMin)(e)),l=[],h={},d=[];for(i=this.binWidth=(0,s.correctFloat)((0,s.isNumber)(i)?i||1:(n-o)/t),this.options.pointRange=Math.max(i,0),a=o;a<n&&(this.userOptions.binWidth||(0,s.correctFloat)(n-a)>=i||0>=(0,s.correctFloat)((0,s.correctFloat)(o+l.length*i)-a));a=(0,s.correctFloat)(a+i))l.push(a),h[a]=0;0!==h[o]&&(l.push(o),h[o]=0);let u=(r=l.map(e=>parseFloat(e)),function(e){let t=1;for(;r[t]<=e;)t++;return r[--t]});for(let t of e)h[(0,s.correctFloat)(u(t))]++;for(let e of Object.keys(h))d.push({x:Number(e),y:h[e],x2:(0,s.correctFloat)(Number(e)+i)});return d.sort((e,t)=>e.x-t.x),d[d.length-1].x2=n,d}setDerivedData(){let e=this.baseSeries?.getColumn("y");e?.length?this.setData(e,!1,void 0,!1):this.setData([])}}p.defaultOptions=(0,s.merge)(u.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/>'}}),l.compose(p),d().registerSeriesType("histogram",p);let{areaspline:m}=d().seriesTypes;class v extends m{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 i=e.length;t=(0,s.isNumber)(t)?t:v.mean(e);let r=e.reduce((e,s)=>{let i=s-t;return e+i*i},0);return i>1&&Math.sqrt(r/(i-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,i,r){let a=[];void 0!==e&&e.length>0&&(e=e.map(function(e){return(0,s.isNumber)(e)?e:e?.y}).filter(s.isNumber),this.setMean(e),this.setStandardDeviation(e),(0,s.isNumber)(this.mean)&&(0,s.isNumber)(this.standardDeviation)&&this.standardDeviation>0&&(a=this.derivedData(this.mean,this.standardDeviation))),super.setData.call(this,a,t,i,r)}derivedData(e,t){let s=this.options,i=s.intervals,r=s.pointsInInterval,a=i*r*2+1,n=t/r,o=[],l=e-i*t;for(let s=0;s<a;s++)o.push([l,v.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){let t=v.mean(e||[]);this.mean=(0,s.isNumber)(t)?(0,s.correctFloat)(t):void 0}setStandardDeviation(e){let t=v.standardDeviation(e||[],this.mean);this.standardDeviation=(0,s.isNumber)(t)?(0,s.correctFloat)(t):void 0}}v.defaultOptions=(0,s.merge)(m.defaultOptions,{intervals:3,pointsInInterval:3,marker:{enabled:!1}}),l.compose(v),d().registerSeriesType("bellcurve",v);let b=r();export{b as default};