fastplotjs
v0.3.0
Published
Cross-platform charts with a shared Rust core and TypeScript API
Readme
FastPlotJs
FastPlotJs is a charting library for browser canvases and Node scene generation. Install the public package with:
npm install fastplotjsIn a browser project with a JavaScript bundler:
import { createChart } from "fastplotjs";
createChart(document.getElementById("chart"), {
type: "line",
engine: "auto",
data: [{ x: 0, y: 12 }, { x: 1, y: 18 }],
axes: { show: true },
});For a Content Security Policy, allow the package worker through worker-src.
Chromium requires script-src 'wasm-unsafe-eval' when the optional browser
WebAssembly engine is initialized; the JavaScript runtime does not require
'unsafe-eval'.
In Node, plot() produces a renderer-neutral scene without a browser:
import { plot } from "fastplotjs";
const scene = plot({
type: "line",
width: 800,
height: 400,
engine: "ts",
data: [{ x: 0, y: 12 }, { x: 1, y: 18 }],
});Current 2D chart families include line, bar, polar, pie, heatmap, and wonderplot. Scatter3D, Line3D, Surface, Mesh3D, and Pie3D are experimental; their contracts may change in a future minor release. Pie3D reuses pie datum and presentation options, accepts pie3d.extrusionDepth in (0, 1], and uses the shared scene3d.camera. The optional native 3D PNG path has Windows validation only. renderToPNG() retains its documented placeholder behavior.
See fastplotjs.com for installation and configuration guides. TypeScript declarations ship with the package. The published artifact contains compiled runtime files, declarations, the MIT License for FastPlotJs, and required third-party notices in native/ and wasm/. The project repository remains private.
Canvas quality
createChart and renderToCanvas accept canvas: { pixelRatio: "auto", resolutionScale: 2 }. Omitted ratios default to 1; logical sizes, text and pointer coordinates remain unchanged while the backing bitmap scales. Experimental Pie3D also accepts pie3d: { curveTolerance: 0.1 } (default 1 logical pixel; smaller means more faces, within scene3d.maxPoints). Higher settings use more memory and rendering work. See the repository README and the runnable examples/browser/canvas-quality comparison for resize and direct-render semantics.
