Command Palette

Search for a command to run...

position in category
#10

JavaScript library for bespoke data visualization built on web standards. It provides a low-level toolbox for creating dynamic, data-driven graphics with SVG, Canvas, and HTML, where you compose primitives rather than assembling predefined charts. D3 binds data to DOM elements and lets you control exactly what happens when data changes.

Created at Stanford in 2011 and maintained by Observable. Recognized with the IEEE VIS Test of Time Award and the Information is Beautiful Test of Time Award for bringing data visualization to the mainstream. Many higher-level chart libraries build on D3, and it powers graphics at media organizations and across newsrooms. Unlike high-level charting libraries, D3 has no chart abstraction, which means more code for common tasks but complete control over every visual detail.

Key capabilities:

  • Selections and transitions for creating, updating, and animating the DOM based on data without a virtual DOM
  • Scales and axes for encoding abstract data into position, size, and color, with ordinal, linear, time, logarithmic, and diverging scales
  • Shapes for arcs, areas, lines, links, pies, stacks, symbols, and curves
  • Layout algorithms for treemaps, force-directed graphs, trees, Voronoi diagrams, circle-packing, and hierarchical partitions
  • Geographic projections with spherical math and flexible clipping
  • Interactive behaviors such as panning, zooming, brushing, and dragging
  • Data utilities for CSV parsing, date formatting, binning, grouping, and color interpolation

Use D3 when you need maximal expressiveness for one-off or high-impact visualizations, when standard chart libraries are too limiting, or when building interactive explorable graphics that respond to user input. Fits well in newsrooms, public-facing dashboards, and research tools where design clarity matters. Pairs with React, Vue, and Svelte for integration into modern web apps.

GitHub Repositories
308
-9.4%
Trending down this week
Removed in 32 repos