cheatah
Extension

cheatah-plot

cheatah-plot v0.1.1-alpha — Biome Standard 0.6.5-alpha

Plotting and charting

Depends on: cheatah (toolchain v1.11.4-alpha) · cheatah-gpu · cheatah-gpu-linalg

Dead-simple cross-platform plotting for cheatah. Hand it some numbers, get a beautiful plot — as a PNG, or as pixels you read back and stream anywhere.

import plot

let xs = # ... an ndarray of x values
let ys = # ... an ndarray of y values
let fig = plot.line(plot.new_figure(), xs, ys)
fig = plot.title(fig, "my line")
plot.save(fig, "line.png")     # a real PNG, rendered by cheatah-plot

The model layers (plot.scale / plot.color / plot.series / plot.stats / plot.figure) are pure cheatah on ndarray — fully testable with no device. The renderer is cheatah-plot's OWN layer built directly on cheatah-gpu's raw Vulkan/Metal forwarders: compute-shader rasterization into an offscreen framebuffer you save to a file or read back (to stream a live plot to a website, no JavaScript). Anything that is linear algebra rides the stdlib linalg — and, for device-resident arrays, cheatah-gpu-linalg's overloads. Headless first; windowing is roadmap. See docs/DESIGN.md for the architecture.

Install

biome add cheatah-plot        # fetches cheatah-plot + its cheatah-gpu stack

Then import plot and draw. scripts/doctor.sh verifies your machine is ready for the GPU path (Vulkan loader, slangc); the model layers and the CPU render path need no GPU at all.

Modules

| import … | what | status | |------------|------|--------| | plot | the umbrella — the whole plot.* surface in one import | working | | plot.scale | the pure axis geometry: ranges, "nice" linear + log ticks, data→pixel | working | | plot.color | colours, categorical palettes, viridis/magma/coolwarm colormaps | working | | plot.series | the mark data + style value every plot call builds | working | | plot.stats | histogram binning, the linalg.lstsq fit line, error magnitudes | working | | plot.figure | the figure model: subplots, axes, the fluent building API | working | | plot.renderer | the 2D renderer: CPU reference + bit-exact emulated-Metal + Vulkan lanes | working | | plot.window | windowing + presentation | roadmap |

Status

The whole stack works end to end: build figures from cheatah, render them to PNGs — on the CPU reference rasterizer everywhere, and through the GPU lanes (Vulkan, emulated Metal) when a device is present, with render() falling back cleanly. Fifteen example programs draw the gallery (examples/purr_plot/). plot.window (presentation) is the next layer.

<!-- coverage:start --> | Metric | plot package | |--------|--------------| | Lines | 100.00% (394/394) | | Functions | 100.00% (121/121) | | Regions | 97.51% | | Branches | 89.74% | <!-- coverage:end -->

License

MIT — © 2026 BigBrain LLC (Joshua Doucette, on its behalf). See LICENSE and NOTICE.

What it produces

line sine
line sine
sin cos multi series
sin cos multi series
hist gaussian
hist gaussian
heatmap sinxcosy
heatmap sinxcosy
gallery 2x2 subplots
gallery 2x2 subplots
signal and hist 1x2
signal and hist 1x2
colormaps
colormaps

Modules

Release history · The Biome Standard