finds.dev← search

// the find

palantir/plottable

★ 3,128 · TypeScript · MIT · updated Oct 2026

:bar_chart: A library of modular chart components built on D3

Plottable is a TypeScript library of D3-based chart components: plots, axes, legends, gridlines, and tables that you arrange yourself, rather than a finished chart driven by a config object. It suits teams building custom visualizations who are comfortable writing layout code, and it is a poor fit for anyone who just wants a bar chart quickly.

- The composition model holds up in the code. A Table lays out Components, plots take Scales and Datasets, and custom components extend the same Component base class the built-ins use (src/components/component.ts), so extending it does not mean forking.

- Rendering is batched. RenderController and its render policies (src/core/renderController.ts, src/core/renderPolicy.ts) coalesce re-renders, so changing several properties before a frame costs one layout pass.

- The drawer layer has both SVG and Canvas implementations (src/drawers/svgDrawer.ts, canvasDrawer.ts), and the quicktests include canvas and SVG variants of the same plot types, which makes it practical to swap renderers for large scatter plots.

- The tests mirror the source tree folder by folder, cover internals like rTree and memoize, and include a namespacing test that guards the public export surface.

- The docs live outside the repo. Upgrade guides for v1, v2, and v3 are wiki pages and the examples are on plottablejs.org, so reading the code means cross-referencing pages that can drift from it.

- The chart types are a fixed set in src/plots: bar, clustered and stacked bar, line, area, scatter, pie, waterfall, segment, and rectangle. There is no heatmap, box plot, or candlestick, so those mean a custom Component or a RectanglePlot with hand-built scales.

- The README describes visual tests as HTML pages under quicktests/ that you open and look at. The tree shows no screenshot-diff tooling, so layout regressions in the SVG output probably depend on someone noticing them by eye.

- The public API exposes D3 types and scales, so D3 major-version upgrades reach your code too. The last push was recent, but the project's history is a chain of breaking major versions, so check the changelog before adopting it.

View on GitHub → Homepage ↗

// want more like this?

We dig through GitHub every week and send a few repos picked for what you actually care about — each with an honest take like this one.

Get finds in your inbox → Search again →