cione-comp-lib
Version:
`$ yarn add cione-comp-lib` 或者 `$ npm i cione-comp-lib -S`
38 lines (37 loc) • 1.37 kB
JavaScript
import { asc, quantile } from "../../util/number.mjs";
import { isFunction, isString } from "../../../../zrender/lib/core/util.mjs";
function prepareBoxplotData(rawData, opt) {
opt = opt || {};
var boxData = [];
var outliers = [];
var boundIQR = opt.boundIQR;
var useExtreme = boundIQR === "none" || boundIQR === 0;
for (var i = 0; i < rawData.length; i++) {
var ascList = asc(rawData[i].slice());
var Q1 = quantile(ascList, 0.25);
var Q2 = quantile(ascList, 0.5);
var Q3 = quantile(ascList, 0.75);
var min = ascList[0];
var max = ascList[ascList.length - 1];
var bound = (boundIQR == null ? 1.5 : boundIQR) * (Q3 - Q1);
var low = useExtreme ? min : Math.max(min, Q1 - bound);
var high = useExtreme ? max : Math.min(max, Q3 + bound);
var itemNameFormatter = opt.itemNameFormatter;
var itemName = isFunction(itemNameFormatter) ? itemNameFormatter({
value: i
}) : isString(itemNameFormatter) ? itemNameFormatter.replace("{value}", i + "") : i + "";
boxData.push([itemName, low, Q1, Q2, Q3, high]);
for (var j = 0; j < ascList.length; j++) {
var dataItem = ascList[j];
if (dataItem < low || dataItem > high) {
var outlier = [itemName, dataItem];
outliers.push(outlier);
}
}
}
return {
boxData,
outliers
};
}
export { prepareBoxplotData as default };