Skip to content
mbostock edited this page Dec 18, 2012 · 50 revisions

WikiRelease Notes3.0

The page covers new features in 3.0; see Upgrading to 3.0 for how to migrate from 2.x to 3.0.

Transitions

Chained Transitions
Stacked-to-Grouped Transition
Custom Axis Transition

D3’s transitions now bind tweens and other transition state to the DOM, similar to how data is bound to selections. You can now reselect scheduled transitions from the DOM and inspect them in the JavaScript console, or even modify them, say for customized axes!

Value functions passed to transition.attr and transition.style are now evaluated immediately, rather than at the start of the transition. This simplifies scheduling of chained transitions that depend on external state, such as scale domains. The transition.transition now creates a transition that starts when the previous transition ends (rather than a concurrent transition), so you can chain transitions (such as stacked-to-grouped bars) without needing to listen for "end" events.

For more on how transitions work in D3, see the Working with Transitions tutorial.

Requests

Progress Events
Using Queue.js

D3 now provides a proper d3.xhr object in addition to asynchronous methods for issuing requests. This means that you can now have multiple listeners on the same request, including separate listeners for progress, load and error events. You can use xhr.abort to cancel in-flight requests, xhr.header to add request headers, and xhr.send to customize the HTTP method and body data. D3 also provides CORS compatibility for IE9 by way of Microsoft's nonstandard XDomainRequest object.

The asynchronous request methods now use the Node.js callback pattern, where the first argument to the callback is the error, and the second argument is the response content. This makes d3.xhr compatible with asynchronous JavaScript helper libraries, such as Queue.js.

Geo

d3.geo.projection

d3.geo.stream

  • direct to canvas rendering (path.context)!
  • streaming geometry transformations (e.g., simplification)
  • less memory overhead during projection operations

Utilities

  • d3.geo.graticule - display grid lines
  • d3.geo.circle - small and great circle rendering (like Tissot's indicatrix)
  • d3.geo.interpolate - interpolate along great arcs
  • d3.geo.{area,centroid,bounds} - spherical area, centroid and bounds
  • path.{area,centroid,bounds} - observes clipping & resampling

Extended Projections

  • d3.geo.aitoff - Aitoff
  • d3.geo.albers - Albers equal-area conic
  • d3.geo.august - August conformal
  • d3.geo.azimuthalEqualArea - Lambert azimuthal equal-area
  • d3.geo.azimuthalEquidistant - Azimuthal equidistant
  • d3.geo.bonne - Bonne
  • d3.geo.collignon - Collignon
  • d3.geo.conicConformal - Lambert conformal conic
  • d3.geo.conicEquidistant - Conic equidistant
  • d3.geo.cylindricalEqualArea - Cylindrical equal-area
  • d3.geo.eckert1 - Eckert I
  • d3.geo.eckert2 - Eckert II
  • d3.geo.eckert3 - Eckert III
  • d3.geo.eckert4 - Eckert IV
  • d3.geo.eckert5 - Eckert V
  • d3.geo.eckert6 - Eckert VI
  • d3.geo.eisenlohr - Eisenlohr conformal
  • d3.geo.equirectangular - Equirectangular (Plate Carrée)
  • d3.geo.gnomonic - Gnomonic
  • d3.geo.gringorten - Gringorten
  • d3.geo.guyou - Guyou hemisphere-in-a-square
  • d3.geo.hammer - Hammer
  • d3.geo.homolosine - Goode Homolosine
  • d3.geo.kavrayskiy7 - Kavrayskiy VII
  • d3.geo.lagrange - Lagrange conformal
  • d3.geo.larrivee - Larrivée
  • d3.geo.mercator - Mercator
  • d3.geo.miller - Miller
  • d3.geo.mollweide - Mollweide
  • d3.geo.nellHammer - Nell–Hammer
  • d3.geo.orthographic - Orthographic
  • d3.geo.polyconic - Polyconic
  • d3.geo.robinson - Robinson
  • d3.geo.satellite - Satellite (tilted perpsective)
  • d3.geo.sinusoidal - Sinusoidal
  • d3.geo.sinuMollweide - Sinu-Mollweide
  • d3.geo.stereographic - Stereographic
  • d3.geo.vanDerGrinten - Van der Grinten
  • d3.geo.wagner6 - Wagner VI
  • d3.geo.winkel3 - Winkel Tripel

Quadtree Tiles

  • d3.geo.tile

TopoJSON

Replacement for GeoJSON that typically provides 80-90% smaller file sizes. Also encodes topology, enabling topology-preserving shape simplification (à la MapShaper), map coloring, cartograms, boundary mesh computation, and more!

Other

  • d3.shuffle - Fisher–Yates shuffle
  • d3.format and d3.time.format - align, fill and localization support
  • d3.layout.treemap - slice and dice
  • moved to bl.ocks.org for easier browsing & forking
  • various bug fixes and performance improvements
  • d3.hexbin plugin - hexagonal binning

And more!

Clone this wiki locally