Code

D3.js

Scales

Beginner D3 scales map an input domain to an output range. Visualise how scaleLinear, scaleSqrt, scaleLog, and scaleSequential distribute values differently. d3-scale

// Linear — uniform mapping
const linear = d3.scaleLinear()
  .domain([0, 100])
  .range([0, 300]);

// Square-root — compresses large values
const sqrt = d3.scaleSqrt()
  .domain([0, 100])
  .range([0, 300]);

// Log — expands small values
const log = d3.scaleLog()
  .domain([1, 100])
  .range([0, 300]);

// Sequential — maps to a colour interpolator
const color = d3.scaleSequential(
  d3.interpolateViridis
).domain([0, 300]);

// Usage
const px = linear(50);  // 150
const c  = color(150);  // '#…'
Key APIs
  • d3.scaleLinear() — uniform linear interpolation
  • d3.scaleSqrt() — square-root transformation (great for area encoding)
  • d3.scaleLog() — logarithmic transformation (domain must not cross 0)
  • d3.scaleSequential(interpolator) — maps [0,1] to a colour interpolator
  • scale.domain([min, max]) — input extent
  • scale.range([min, max]) — output extent
  • scale.invert(output) — reverse map (linear & log only)