UNPKG

@tanstack/charts

Version:

A chart grammar for TypeScript and JavaScript. Marks consume your data directly, channels describe visual encodings, and the engine compiles them into a renderer-neutral keyed scene. TanStack's compact scales cover common numeric and categorical mappings.

44 lines (43 loc) 1.24 kB
import { quantileSortedValues } from "./transform-statistics-internal.js"; function quantile(probability) { if (!Number.isFinite(probability) || probability < 0 || probability > 1) { throw new TypeError("quantile: probability must be between zero and one"); } return ({ values }) => { const sorted = [...values].sort((left, right) => left - right); return quantileSortedValues(sorted, probability); }; } function median(context) { return quantile(0.5)(context); } function variance({ values }) { if (values.length < 2) return Number.NaN; const mean = values.reduce((total, value) => total + value, 0) / values.length; return values.reduce((total, value) => total + (value - mean) ** 2, 0) / (values.length - 1); } function deviation(context) { return Math.sqrt(variance(context)); } function first({ values }) { return values[0] ?? Number.NaN; } function last({ values }) { return values.at(-1) ?? Number.NaN; } function delta({ values }) { return (values.at(-1) ?? Number.NaN) - (values[0] ?? Number.NaN); } function ratio({ values }) { return (values.at(-1) ?? Number.NaN) / (values[0] ?? Number.NaN); } export { delta, deviation, first, last, median, quantile, ratio, variance };