Releases: shergin/malevich
Releases · shergin/malevich
Release list
1.16.0 (Red Square)
Color speaks data. One categorical channel, a curated color vocabulary, a
least-squares stat, and one shared reducer close the gaps between malevich
and the charts science asks for first — and the CLI grows a bridge out of
the shell. Everything is additive, and the re-measured render baseline came
out slightly faster than 1.15.
- One vocabulary for every aggregation:
stat::Reducer—Count,Sum,
Mean,Median,Min,Max,Percentile(q)(type-7, exactly the box
plot's estimator) — is now whatAgg::reduceandWindow::reducetake
(their named methods are sugar over it), what the newstat::binneduses to
reduce a paired series per histogram bin, and whatstat::quantiles
evaluates in batch over one sort. Rolling p95s, per-group percentiles,
binned medians, and Q–Q plots (see the gallery) all fall out with no new
API shapes. - The line of best fit:
stat::Fitis streaming ordinary least squares —
bivariate Welford accumulation, mergeable like every other aggregator, with
slope, intercept, R², prediction, and the standard error of the mean
response. Thetrendpreset draws a scatter with its fitted line;
trend_withadds a confidence band around the mean response through the
existing band mark, at a caller-chosen standard-error multiplier. Measured:
one million pairs fit in ~5 ms single-threaded (BENCHMARKS.md). - Interval polish:
error_bars_asymmetric(x, y, minus, plus)covers two-sided
deviations, andecdf_withgrows the Dvoretzky–Kiefer–Wolfowitz confidence
band as a checked option — both compositions of existing marks, both proven
equal to their grammar expansions. - Color speaks data:
color_by(categories)onLine,Points,Bars, and
Rangecolors a layer by a categorical series. Distinct categories (first
appearance first) take colors from the newscale::Palette— Okabe–Ito by
default, colorblind-safe, replaceable withPlot::palette— and name
themselves in the legend. In colorless output the default point markers cycle
shapes per category, so groups separate in a pipe as well as a terminal. The
channel is proven bit-identical to its masked-layer expansion; grouped
scatter, volcano, Manhattan, and candlestick compositions join the gallery. PointStylegains portableAsterisk(*) andCircle(o) markers, in
cells and as geometric pixel shapes; the ASCII legend swatch forDotis now
.., freeing**for the asterisk.Colormapgrows a curated named set — sequentialVIRIDIS(the default,
now named),MAGMA,CIVIDIS,GREYSand divergingRED_BLUE,
PURPLE_ORANGE— selected to stay distinguishable after the 256- and
16-color quantizers, withColormap::namedresolving the canonical names
for CLIs and configuration.Colormap::centered_at(mid)anchors a map to a data midpoint: signed and
centered data (correlations, log fold changes) renders with the neutral
color at the midpoint and the value range spanned symmetrically, and the
colorbar labels the symmetric span.heatmap_withjoins the checked_with
presets so heatmaps take a colormap without abandoning the one-call default;
the correlation example now demonstrates the honest encoding.- The control-character-dropping behavior of the cell grid is now a stated,
regression-tested contract: hostile escape bytes in titles, labels, categories,
or annotations can never reach ANSI, plain, or HTML output.
Also released: malevich-cli 0.2.0 (kaz) with --emit-code, --cols, --by, --colormap, and --midpoint (tag cli-v0.2.0).
Full changelog: CHANGELOG.md · crates.io: malevich 1.16.0