...

/

Why React and D3.js

Why React and D3.js

React is Facebook’s and Instagram’s approach to writing modern JavaScript front-ends. It encourages building an app out of small, re-usable components. Each component is self-contained and only knows how to render a small bit of the interface.

The catch is that many frameworks have attempted this: everything from Angular to Backbone and jQuery plugins. But where jQuery plugins quickly become messy, Angular depends too much on HTML structure, and Backbone needs a lot of boilerplate, React has found a sweet spot.

I have found it a joy to use. Using React was the first time I have ever been able to move a piece of HTML without having to change any JavaScript.

D3.js is Mike Bostock’s infamous data visualization library. It’s used by The New York Times along with many other sites. It is the workhorse of data visualization on the web, and many charting libraries out there are based on it.

But D3.js is a fairly low-level library. You can’t just say “I have data; give me a bar chart”. Well, you can, but it takes a few more lines of code than that. Once you get used to it though, D3.js is a joy to use.

Just like React, D3.js is declarative. You tell it what you want instead of how you want it. It gives you access straight to the SVG so you can manipulate your lines and rectangles at will. The issue is that D3.js isn’t that great if all you want are charts.

This is where React comes in. For instance, once you’ve created a histogram component, you can always get a histogram with <Histogram {...params} />.

Doesn’t that sound like the best? I think it’s amazing.

It gets even better. With React, you can make various graph and chart components build off of the same data. This means that when your data changes, the whole visualization reacts.

Your graph changes. The title changes. The description changes. Everything changes. Mind = blown.

Look how this H1B salary visualization changes when the user picks a subset of the data to look at.

Default H1B histogram

widget

Changes after user picks a data subset

widget

React + d3.js: a powerful combination indeed.

Access this course and 1200+ top-rated courses and projects.