Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

D3 4.0 rangeRoundBands equivalent?

I see a lot of D3 code that has something like this:

var x = d3.scale.ordinal()
  .rangeRoundBands([0, width], .1);

As of D3 version 4.0 d3.scale.ordinal() is now d3.scaleOrdinal and rangeRoundBands seems to be gone.

> d3.scaleOrdinal()

{ 
  [Function: scale]
  domain: [Function],
  range: [Function],
  unknown: [Function],
  copy: [Function] 
}

What would the D3 v4 equivalent of this code (from Mike Bostock's bar chart example) be?

var x = d3.scale.ordinal()
  .rangeRoundBands([0, width], .1);
like image 229
mikewilliamson Avatar asked May 31 '16 14:05

mikewilliamson


2 Answers

In D3 4.x rangeRoundBands was moved to the new Band scale:

d3.scaleBand()
    .range([range])
    .round([round]);

That's equivalent to:

d3.scaleBand()
    .rangeRound([range]);

Here is the API: https://github.com/d3/d3-scale#band-scales

like image 83
Gerardo Furtado Avatar answered Oct 16 '22 15:10

Gerardo Furtado


var x = d3.scale.ordinal()
    .rangeRoundBands([0, width], .1);

The above calculates bands and sets padding between band. In v4, the equivalent is

var x = d3.scaleBand()
    .rangeRound([0, width])
    .padding(0.1);
like image 70
Nan Zhou Avatar answered Oct 16 '22 16:10

Nan Zhou