@visactor/vchart 2.0.7-alpha.4 → 2.0.7-alpha.5
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/build/es5/index.js +1 -1
- package/build/index.es.js +83 -1
- package/build/index.js +83 -1
- package/build/index.min.js +2 -2
- package/build/tsconfig.tsbuildinfo +1 -1
- package/cjs/chart/box-plot/box-plot.js +3 -2
- package/cjs/chart/box-plot/box-plot.js.map +1 -1
- package/cjs/core/index.d.ts +1 -1
- package/cjs/core/index.js +1 -1
- package/cjs/core/index.js.map +1 -1
- package/cjs/core/interface.js +1 -1
- package/cjs/core/util.js +1 -1
- package/cjs/data/initialize.js +1 -1
- package/cjs/data/register.js +1 -1
- package/esm/chart/box-plot/box-plot.js +4 -1
- package/esm/chart/box-plot/box-plot.js.map +1 -1
- package/esm/core/index.d.ts +1 -1
- package/esm/core/index.js +1 -1
- package/esm/core/index.js.map +1 -1
- package/esm/core/interface.js +1 -1
- package/esm/core/util.js +1 -1
- package/esm/data/initialize.js +1 -1
- package/esm/data/register.js +1 -1
- package/package.json +5 -5
package/build/index.es.js
CHANGED
|
@@ -6165,6 +6165,87 @@ const bin = (data, options) => {
|
|
|
6165
6165
|
return out;
|
|
6166
6166
|
};
|
|
6167
6167
|
|
|
6168
|
+
const boxplot = (data, options) => {
|
|
6169
|
+
var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k, _l, _m, _o, _p, _q, _r;
|
|
6170
|
+
const field = null == options ? void 0 : options.field;
|
|
6171
|
+
if (!field) return [];
|
|
6172
|
+
const groupField = null == options ? void 0 : options.groupField;
|
|
6173
|
+
let whiskers = null !== (_a = null == options ? void 0 : options.whiskers) && void 0 !== _a ? _a : 1.5;
|
|
6174
|
+
const includeValues = !!(null == options ? void 0 : options.includeValues),
|
|
6175
|
+
names = null !== (_b = null == options ? void 0 : options.outputNames) && void 0 !== _b ? _b : {},
|
|
6176
|
+
keyName = null !== (_c = names.key) && void 0 !== _c ? _c : isArray$1(groupField) ? null : null !== (_d = groupField) && void 0 !== _d ? _d : "key",
|
|
6177
|
+
countName = null !== (_e = names.count) && void 0 !== _e ? _e : "count",
|
|
6178
|
+
meanName = null !== (_f = names.mean) && void 0 !== _f ? _f : "mean",
|
|
6179
|
+
q1Name = null !== (_g = names.q1) && void 0 !== _g ? _g : "q1",
|
|
6180
|
+
medianName = null !== (_h = names.median) && void 0 !== _h ? _h : "median",
|
|
6181
|
+
q3Name = null !== (_j = names.q3) && void 0 !== _j ? _j : "q3",
|
|
6182
|
+
iqrName = null !== (_k = names.iqr) && void 0 !== _k ? _k : "iqr",
|
|
6183
|
+
minName = null !== (_l = names.min) && void 0 !== _l ? _l : "min",
|
|
6184
|
+
maxName = null !== (_m = names.max) && void 0 !== _m ? _m : "max",
|
|
6185
|
+
lowerWhiskerName = null !== (_o = names.lowerWhisker) && void 0 !== _o ? _o : "lowerWhisker",
|
|
6186
|
+
upperWhiskerName = null !== (_p = names.upperWhisker) && void 0 !== _p ? _p : "upperWhisker",
|
|
6187
|
+
outliersName = null !== (_q = names.outliers) && void 0 !== _q ? _q : "outliers",
|
|
6188
|
+
valuesName = null !== (_r = names.values) && void 0 !== _r ? _r : "values",
|
|
6189
|
+
groups = new Map(),
|
|
6190
|
+
rawValues = new Map(),
|
|
6191
|
+
keyToGroup = new Map(),
|
|
6192
|
+
n = data.length;
|
|
6193
|
+
for (let i = 0; i < n; i++) {
|
|
6194
|
+
const d = data[i],
|
|
6195
|
+
v = d[field];
|
|
6196
|
+
if (isNil$1(v)) continue;
|
|
6197
|
+
const num = +v;
|
|
6198
|
+
if (!Number.isFinite(num)) continue;
|
|
6199
|
+
let key;
|
|
6200
|
+
key = isArray$1(groupField) ? groupField.map(f => String(d[f])).join("||") : groupField ? String(d[groupField]) : "___all", groups.has(key) || (groups.set(key, []), includeValues && rawValues.set(key, []), isArray$1(groupField) ? keyToGroup.set(key, Object.fromEntries(groupField.map(f => [f, d[f]]))) : keyToGroup.set(key, groupField ? d[groupField] : null));
|
|
6201
|
+
const arr = groups.get(key);
|
|
6202
|
+
if (arr && arr.push(num), includeValues) {
|
|
6203
|
+
const rv = rawValues.get(key);
|
|
6204
|
+
rv && rv.push(d);
|
|
6205
|
+
}
|
|
6206
|
+
}
|
|
6207
|
+
if (isArray$1(whiskers)) {
|
|
6208
|
+
whiskers = [clamp$1(Math.min.apply(null, whiskers), 0, 1), clamp$1(Math.max.apply(null, whiskers), 0, 1)];
|
|
6209
|
+
}
|
|
6210
|
+
const out = [];
|
|
6211
|
+
for (const [key, vals] of groups) {
|
|
6212
|
+
if (!vals || 0 === vals.length) continue;
|
|
6213
|
+
const sorted = vals.slice().sort((a, b) => a - b),
|
|
6214
|
+
count = sorted.length,
|
|
6215
|
+
dataMin = sorted[0],
|
|
6216
|
+
dataMax = sorted[sorted.length - 1];
|
|
6217
|
+
let sum = 0;
|
|
6218
|
+
for (let i = 0; i < sorted.length; i++) sum += sorted[i];
|
|
6219
|
+
const mean = sum / count,
|
|
6220
|
+
q1 = quantileSorted(sorted, .25),
|
|
6221
|
+
median = quantileSorted(sorted, .5),
|
|
6222
|
+
q3 = quantileSorted(sorted, .75),
|
|
6223
|
+
iqr = q3 - q1,
|
|
6224
|
+
lowerBound = isArray$1(whiskers) ? quantileSorted(sorted, whiskers[0]) : q1 - whiskers * iqr,
|
|
6225
|
+
upperBound = isArray$1(whiskers) ? quantileSorted(sorted, whiskers[1]) : q3 + whiskers * iqr;
|
|
6226
|
+
let lowerWhisker = dataMin;
|
|
6227
|
+
for (let i = 0; i < sorted.length; i++) if (sorted[i] >= lowerBound) {
|
|
6228
|
+
lowerWhisker = sorted[i];
|
|
6229
|
+
break;
|
|
6230
|
+
}
|
|
6231
|
+
let upperWhisker = dataMax;
|
|
6232
|
+
for (let i = sorted.length - 1; i >= 0; i--) if (sorted[i] <= upperBound) {
|
|
6233
|
+
upperWhisker = sorted[i];
|
|
6234
|
+
break;
|
|
6235
|
+
}
|
|
6236
|
+
const outliers = [];
|
|
6237
|
+
for (let i = 0; i < sorted.length; i++) (sorted[i] < lowerWhisker || sorted[i] > upperWhisker) && outliers.push(sorted[i]);
|
|
6238
|
+
const obj = {},
|
|
6239
|
+
representative = keyToGroup.get(key);
|
|
6240
|
+
if (null !== keyName) obj[keyName] = representative;else if (isArray$1(groupField)) {
|
|
6241
|
+
const groupObj = representative || {};
|
|
6242
|
+
for (const f of groupField) obj[f] = groupObj[f];
|
|
6243
|
+
}
|
|
6244
|
+
obj[countName] = count, obj[meanName] = mean, obj[q1Name] = q1, obj[medianName] = median, obj[q3Name] = q3, obj[iqrName] = iqr, obj[minName] = dataMin, obj[maxName] = dataMax, obj[lowerWhiskerName] = lowerWhisker, obj[upperWhiskerName] = upperWhisker, obj[outliersName] = outliers, includeValues && (obj[valuesName] = rawValues.get(key) || []), out.push(obj);
|
|
6245
|
+
}
|
|
6246
|
+
return out;
|
|
6247
|
+
};
|
|
6248
|
+
|
|
6168
6249
|
var EOL = {},
|
|
6169
6250
|
EOF = {},
|
|
6170
6251
|
QUOTE = 34,
|
|
@@ -58765,7 +58846,7 @@ const lookup = (data, opt) => {
|
|
|
58765
58846
|
});
|
|
58766
58847
|
};
|
|
58767
58848
|
|
|
58768
|
-
const version = "2.0.7-alpha.
|
|
58849
|
+
const version = "2.0.7-alpha.5";
|
|
58769
58850
|
|
|
58770
58851
|
const addVChartProperty = (data, op) => {
|
|
58771
58852
|
const context = op.beforeCall();
|
|
@@ -90022,6 +90103,7 @@ const registerBoxplotChart = () => {
|
|
|
90022
90103
|
registerDimensionEvents();
|
|
90023
90104
|
registerDimensionHover();
|
|
90024
90105
|
registerBoxplotSeries();
|
|
90106
|
+
Factory.registerTransform('boxplot', boxplot);
|
|
90025
90107
|
Factory.registerChart(BoxPlotChart.type, BoxPlotChart);
|
|
90026
90108
|
};
|
|
90027
90109
|
|
package/build/index.js
CHANGED
|
@@ -6171,6 +6171,87 @@
|
|
|
6171
6171
|
return out;
|
|
6172
6172
|
};
|
|
6173
6173
|
|
|
6174
|
+
const boxplot = (data, options) => {
|
|
6175
|
+
var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k, _l, _m, _o, _p, _q, _r;
|
|
6176
|
+
const field = null == options ? void 0 : options.field;
|
|
6177
|
+
if (!field) return [];
|
|
6178
|
+
const groupField = null == options ? void 0 : options.groupField;
|
|
6179
|
+
let whiskers = null !== (_a = null == options ? void 0 : options.whiskers) && void 0 !== _a ? _a : 1.5;
|
|
6180
|
+
const includeValues = !!(null == options ? void 0 : options.includeValues),
|
|
6181
|
+
names = null !== (_b = null == options ? void 0 : options.outputNames) && void 0 !== _b ? _b : {},
|
|
6182
|
+
keyName = null !== (_c = names.key) && void 0 !== _c ? _c : isArray$1(groupField) ? null : null !== (_d = groupField) && void 0 !== _d ? _d : "key",
|
|
6183
|
+
countName = null !== (_e = names.count) && void 0 !== _e ? _e : "count",
|
|
6184
|
+
meanName = null !== (_f = names.mean) && void 0 !== _f ? _f : "mean",
|
|
6185
|
+
q1Name = null !== (_g = names.q1) && void 0 !== _g ? _g : "q1",
|
|
6186
|
+
medianName = null !== (_h = names.median) && void 0 !== _h ? _h : "median",
|
|
6187
|
+
q3Name = null !== (_j = names.q3) && void 0 !== _j ? _j : "q3",
|
|
6188
|
+
iqrName = null !== (_k = names.iqr) && void 0 !== _k ? _k : "iqr",
|
|
6189
|
+
minName = null !== (_l = names.min) && void 0 !== _l ? _l : "min",
|
|
6190
|
+
maxName = null !== (_m = names.max) && void 0 !== _m ? _m : "max",
|
|
6191
|
+
lowerWhiskerName = null !== (_o = names.lowerWhisker) && void 0 !== _o ? _o : "lowerWhisker",
|
|
6192
|
+
upperWhiskerName = null !== (_p = names.upperWhisker) && void 0 !== _p ? _p : "upperWhisker",
|
|
6193
|
+
outliersName = null !== (_q = names.outliers) && void 0 !== _q ? _q : "outliers",
|
|
6194
|
+
valuesName = null !== (_r = names.values) && void 0 !== _r ? _r : "values",
|
|
6195
|
+
groups = new Map(),
|
|
6196
|
+
rawValues = new Map(),
|
|
6197
|
+
keyToGroup = new Map(),
|
|
6198
|
+
n = data.length;
|
|
6199
|
+
for (let i = 0; i < n; i++) {
|
|
6200
|
+
const d = data[i],
|
|
6201
|
+
v = d[field];
|
|
6202
|
+
if (isNil$1(v)) continue;
|
|
6203
|
+
const num = +v;
|
|
6204
|
+
if (!Number.isFinite(num)) continue;
|
|
6205
|
+
let key;
|
|
6206
|
+
key = isArray$1(groupField) ? groupField.map(f => String(d[f])).join("||") : groupField ? String(d[groupField]) : "___all", groups.has(key) || (groups.set(key, []), includeValues && rawValues.set(key, []), isArray$1(groupField) ? keyToGroup.set(key, Object.fromEntries(groupField.map(f => [f, d[f]]))) : keyToGroup.set(key, groupField ? d[groupField] : null));
|
|
6207
|
+
const arr = groups.get(key);
|
|
6208
|
+
if (arr && arr.push(num), includeValues) {
|
|
6209
|
+
const rv = rawValues.get(key);
|
|
6210
|
+
rv && rv.push(d);
|
|
6211
|
+
}
|
|
6212
|
+
}
|
|
6213
|
+
if (isArray$1(whiskers)) {
|
|
6214
|
+
whiskers = [clamp$1(Math.min.apply(null, whiskers), 0, 1), clamp$1(Math.max.apply(null, whiskers), 0, 1)];
|
|
6215
|
+
}
|
|
6216
|
+
const out = [];
|
|
6217
|
+
for (const [key, vals] of groups) {
|
|
6218
|
+
if (!vals || 0 === vals.length) continue;
|
|
6219
|
+
const sorted = vals.slice().sort((a, b) => a - b),
|
|
6220
|
+
count = sorted.length,
|
|
6221
|
+
dataMin = sorted[0],
|
|
6222
|
+
dataMax = sorted[sorted.length - 1];
|
|
6223
|
+
let sum = 0;
|
|
6224
|
+
for (let i = 0; i < sorted.length; i++) sum += sorted[i];
|
|
6225
|
+
const mean = sum / count,
|
|
6226
|
+
q1 = quantileSorted(sorted, .25),
|
|
6227
|
+
median = quantileSorted(sorted, .5),
|
|
6228
|
+
q3 = quantileSorted(sorted, .75),
|
|
6229
|
+
iqr = q3 - q1,
|
|
6230
|
+
lowerBound = isArray$1(whiskers) ? quantileSorted(sorted, whiskers[0]) : q1 - whiskers * iqr,
|
|
6231
|
+
upperBound = isArray$1(whiskers) ? quantileSorted(sorted, whiskers[1]) : q3 + whiskers * iqr;
|
|
6232
|
+
let lowerWhisker = dataMin;
|
|
6233
|
+
for (let i = 0; i < sorted.length; i++) if (sorted[i] >= lowerBound) {
|
|
6234
|
+
lowerWhisker = sorted[i];
|
|
6235
|
+
break;
|
|
6236
|
+
}
|
|
6237
|
+
let upperWhisker = dataMax;
|
|
6238
|
+
for (let i = sorted.length - 1; i >= 0; i--) if (sorted[i] <= upperBound) {
|
|
6239
|
+
upperWhisker = sorted[i];
|
|
6240
|
+
break;
|
|
6241
|
+
}
|
|
6242
|
+
const outliers = [];
|
|
6243
|
+
for (let i = 0; i < sorted.length; i++) (sorted[i] < lowerWhisker || sorted[i] > upperWhisker) && outliers.push(sorted[i]);
|
|
6244
|
+
const obj = {},
|
|
6245
|
+
representative = keyToGroup.get(key);
|
|
6246
|
+
if (null !== keyName) obj[keyName] = representative;else if (isArray$1(groupField)) {
|
|
6247
|
+
const groupObj = representative || {};
|
|
6248
|
+
for (const f of groupField) obj[f] = groupObj[f];
|
|
6249
|
+
}
|
|
6250
|
+
obj[countName] = count, obj[meanName] = mean, obj[q1Name] = q1, obj[medianName] = median, obj[q3Name] = q3, obj[iqrName] = iqr, obj[minName] = dataMin, obj[maxName] = dataMax, obj[lowerWhiskerName] = lowerWhisker, obj[upperWhiskerName] = upperWhisker, obj[outliersName] = outliers, includeValues && (obj[valuesName] = rawValues.get(key) || []), out.push(obj);
|
|
6251
|
+
}
|
|
6252
|
+
return out;
|
|
6253
|
+
};
|
|
6254
|
+
|
|
6174
6255
|
var EOL = {},
|
|
6175
6256
|
EOF = {},
|
|
6176
6257
|
QUOTE = 34,
|
|
@@ -58771,7 +58852,7 @@
|
|
|
58771
58852
|
});
|
|
58772
58853
|
};
|
|
58773
58854
|
|
|
58774
|
-
const version = "2.0.7-alpha.
|
|
58855
|
+
const version = "2.0.7-alpha.5";
|
|
58775
58856
|
|
|
58776
58857
|
const addVChartProperty = (data, op) => {
|
|
58777
58858
|
const context = op.beforeCall();
|
|
@@ -90028,6 +90109,7 @@
|
|
|
90028
90109
|
registerDimensionEvents();
|
|
90029
90110
|
registerDimensionHover();
|
|
90030
90111
|
registerBoxplotSeries();
|
|
90112
|
+
Factory.registerTransform('boxplot', boxplot);
|
|
90031
90113
|
Factory.registerChart(BoxPlotChart.type, BoxPlotChart);
|
|
90032
90114
|
};
|
|
90033
90115
|
|