UNPKG

@visactor/vmind

Version:

<div align="center"> <a href="https://github.com/VisActor#gh-light-mode-only" target="_blank"> <img alt="VisActor Logo" width="200" src="https://github.com/VisActor/.github/blob/main/profile/logo_500_200_light.svg"/> </a> <a href="https://githu

41 lines (34 loc) 1.51 kB
import { isArray } from "@visactor/vutils"; import { coefficientVariation } from "../statistics"; import { InsightType } from "../../type"; import { ChartType } from "../../../../types"; import { isPercenSeries } from "../../utils"; const volatilityAlgo = (context, optioins) => { const {seriesDataMap: seriesDataMap, cell: cell, spec: spec} = context, {threshold: threshold = .8} = optioins || {}, {y: celly} = cell, yField = isArray(celly) ? celly.flat() : [ celly ], result = []; return Object.keys(seriesDataMap).forEach((series => { const seriesDataset = seriesDataMap[series].map((d => d.dataItem)); yField.forEach((measureId => { if (isPercenSeries(spec, measureId)) return; const measureSet = seriesDataset.map((d => Number(d[measureId]))), cv = coefficientVariation(measureSet); Math.abs(cv) > threshold && result.push({ type: InsightType.Volatility, fieldId: measureId, value: cv, significant: cv, seriesName: series, info: { cv: cv } }); })); })), result; }; export const Volatility = { name: "volatility", chartType: [ ChartType.LineChart, ChartType.DualAxisChart, ChartType.BarChart, ChartType.AreaChart ], insightType: InsightType.Volatility, algorithmFunction: volatilityAlgo, supportStack: !0, supportPercent: !1 }; //# sourceMappingURL=index.js.map