1 line
13 KiB
JSON
1 line
13 KiB
JSON
{"ast":null,"code":"import { slice } from \"./array.js\";\nimport bisect from \"./bisect.js\";\nimport constant from \"./constant.js\";\nimport extent from \"./extent.js\";\nimport identity from \"./identity.js\";\nimport nice from \"./nice.js\";\nimport ticks, { tickIncrement } from \"./ticks.js\";\nimport sturges from \"./threshold/sturges.js\";\nexport default function bin() {\n var value = identity,\n domain = extent,\n threshold = sturges;\n function histogram(data) {\n if (!Array.isArray(data)) data = Array.from(data);\n var i,\n n = data.length,\n x,\n step,\n values = new Array(n);\n for (i = 0; i < n; ++i) {\n values[i] = value(data[i], i, data);\n }\n var xz = domain(values),\n x0 = xz[0],\n x1 = xz[1],\n tz = threshold(values, x0, x1);\n\n // Convert number of thresholds into uniform thresholds, and nice the\n // default domain accordingly.\n if (!Array.isArray(tz)) {\n const max = x1,\n tn = +tz;\n if (domain === extent) [x0, x1] = nice(x0, x1, tn);\n tz = ticks(x0, x1, tn);\n\n // If the domain is aligned with the first tick (which it will by\n // default), then we can use quantization rather than bisection to bin\n // values, which is substantially faster.\n if (tz[0] <= x0) step = tickIncrement(x0, x1, tn);\n\n // If the last threshold is coincident with the domain’s upper bound, the\n // last bin will be zero-width. If the default domain is used, and this\n // last threshold is coincident with the maximum input value, we can\n // extend the niced upper bound by one tick to ensure uniform bin widths;\n // otherwise, we simply remove the last threshold. Note that we don’t\n // coerce values or the domain to numbers, and thus must be careful to\n // compare order (>=) rather than strict equality (===)!\n if (tz[tz.length - 1] >= x1) {\n if (max >= x1 && domain === extent) {\n const step = tickIncrement(x0, x1, tn);\n if (isFinite(step)) {\n if (step > 0) {\n x1 = (Math.floor(x1 / step) + 1) * step;\n } else if (step < 0) {\n x1 = (Math.ceil(x1 * -step) + 1) / -step;\n }\n }\n } else {\n tz.pop();\n }\n }\n }\n\n // Remove any thresholds outside the domain.\n // Be careful not to mutate an array owned by the user!\n var m = tz.length,\n a = 0,\n b = m;\n while (tz[a] <= x0) ++a;\n while (tz[b - 1] > x1) --b;\n if (a || b < m) tz = tz.slice(a, b), m = b - a;\n var bins = new Array(m + 1),\n bin;\n\n // Initialize bins.\n for (i = 0; i <= m; ++i) {\n bin = bins[i] = [];\n bin.x0 = i > 0 ? tz[i - 1] : x0;\n bin.x1 = i < m ? tz[i] : x1;\n }\n\n // Assign data to bins by value, ignoring any outside the domain.\n if (isFinite(step)) {\n if (step > 0) {\n for (i = 0; i < n; ++i) {\n if ((x = values[i]) != null && x0 <= x && x <= x1) {\n bins[Math.min(m, Math.floor((x - x0) / step))].push(data[i]);\n }\n }\n } else if (step < 0) {\n for (i = 0; i < n; ++i) {\n if ((x = values[i]) != null && x0 <= x && x <= x1) {\n const j = Math.floor((x0 - x) * step);\n bins[Math.min(m, j + (tz[j] <= x))].push(data[i]); // handle off-by-one due to rounding\n }\n }\n }\n } else {\n for (i = 0; i < n; ++i) {\n if ((x = values[i]) != null && x0 <= x && x <= x1) {\n bins[bisect(tz, x, 0, m)].push(data[i]);\n }\n }\n }\n return bins;\n }\n histogram.value = function (_) {\n return arguments.length ? (value = typeof _ === \"function\" ? _ : constant(_), histogram) : value;\n };\n histogram.domain = function (_) {\n return arguments.length ? (domain = typeof _ === \"function\" ? _ : constant([_[0], _[1]]), histogram) : domain;\n };\n histogram.thresholds = function (_) {\n return arguments.length ? (threshold = typeof _ === \"function\" ? _ : constant(Array.isArray(_) ? slice.call(_) : _), histogram) : threshold;\n };\n return histogram;\n}","map":{"version":3,"names":["slice","bisect","constant","extent","identity","nice","ticks","tickIncrement","sturges","bin","value","domain","threshold","histogram","data","Array","isArray","from","i","n","length","x","step","values","xz","x0","x1","tz","max","tn","isFinite","Math","floor","ceil","pop","m","a","b","bins","min","push","j","_","arguments","thresholds","call"],"sources":["/home/gnx/Desktop/ETB/ETB-FrontEnd/node_modules/d3-array/src/bin.js"],"sourcesContent":["import {slice} from \"./array.js\";\nimport bisect from \"./bisect.js\";\nimport constant from \"./constant.js\";\nimport extent from \"./extent.js\";\nimport identity from \"./identity.js\";\nimport nice from \"./nice.js\";\nimport ticks, {tickIncrement} from \"./ticks.js\";\nimport sturges from \"./threshold/sturges.js\";\n\nexport default function bin() {\n var value = identity,\n domain = extent,\n threshold = sturges;\n\n function histogram(data) {\n if (!Array.isArray(data)) data = Array.from(data);\n\n var i,\n n = data.length,\n x,\n step,\n values = new Array(n);\n\n for (i = 0; i < n; ++i) {\n values[i] = value(data[i], i, data);\n }\n\n var xz = domain(values),\n x0 = xz[0],\n x1 = xz[1],\n tz = threshold(values, x0, x1);\n\n // Convert number of thresholds into uniform thresholds, and nice the\n // default domain accordingly.\n if (!Array.isArray(tz)) {\n const max = x1, tn = +tz;\n if (domain === extent) [x0, x1] = nice(x0, x1, tn);\n tz = ticks(x0, x1, tn);\n\n // If the domain is aligned with the first tick (which it will by\n // default), then we can use quantization rather than bisection to bin\n // values, which is substantially faster.\n if (tz[0] <= x0) step = tickIncrement(x0, x1, tn);\n\n // If the last threshold is coincident with the domain’s upper bound, the\n // last bin will be zero-width. If the default domain is used, and this\n // last threshold is coincident with the maximum input value, we can\n // extend the niced upper bound by one tick to ensure uniform bin widths;\n // otherwise, we simply remove the last threshold. Note that we don’t\n // coerce values or the domain to numbers, and thus must be careful to\n // compare order (>=) rather than strict equality (===)!\n if (tz[tz.length - 1] >= x1) {\n if (max >= x1 && domain === extent) {\n const step = tickIncrement(x0, x1, tn);\n if (isFinite(step)) {\n if (step > 0) {\n x1 = (Math.floor(x1 / step) + 1) * step;\n } else if (step < 0) {\n x1 = (Math.ceil(x1 * -step) + 1) / -step;\n }\n }\n } else {\n tz.pop();\n }\n }\n }\n\n // Remove any thresholds outside the domain.\n // Be careful not to mutate an array owned by the user!\n var m = tz.length, a = 0, b = m;\n while (tz[a] <= x0) ++a;\n while (tz[b - 1] > x1) --b;\n if (a || b < m) tz = tz.slice(a, b), m = b - a;\n\n var bins = new Array(m + 1),\n bin;\n\n // Initialize bins.\n for (i = 0; i <= m; ++i) {\n bin = bins[i] = [];\n bin.x0 = i > 0 ? tz[i - 1] : x0;\n bin.x1 = i < m ? tz[i] : x1;\n }\n\n // Assign data to bins by value, ignoring any outside the domain.\n if (isFinite(step)) {\n if (step > 0) {\n for (i = 0; i < n; ++i) {\n if ((x = values[i]) != null && x0 <= x && x <= x1) {\n bins[Math.min(m, Math.floor((x - x0) / step))].push(data[i]);\n }\n }\n } else if (step < 0) {\n for (i = 0; i < n; ++i) {\n if ((x = values[i]) != null && x0 <= x && x <= x1) {\n const j = Math.floor((x0 - x) * step);\n bins[Math.min(m, j + (tz[j] <= x))].push(data[i]); // handle off-by-one due to rounding\n }\n }\n }\n } else {\n for (i = 0; i < n; ++i) {\n if ((x = values[i]) != null && x0 <= x && x <= x1) {\n bins[bisect(tz, x, 0, m)].push(data[i]);\n }\n }\n }\n\n return bins;\n }\n\n histogram.value = function(_) {\n return arguments.length ? (value = typeof _ === \"function\" ? _ : constant(_), histogram) : value;\n };\n\n histogram.domain = function(_) {\n return arguments.length ? (domain = typeof _ === \"function\" ? _ : constant([_[0], _[1]]), histogram) : domain;\n };\n\n histogram.thresholds = function(_) {\n return arguments.length ? (threshold = typeof _ === \"function\" ? _ : constant(Array.isArray(_) ? slice.call(_) : _), histogram) : threshold;\n };\n\n return histogram;\n}\n"],"mappings":"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","ignoreList":[]},"metadata":{},"sourceType":"module","externalDependencies":[]} |