D3 4.0 rangeRoundBands相当于?

mik*_*son 59 javascript d3.js

我看到很多D3代码有这样的东西:

var x = d3.scale.ordinal()
  .rangeRoundBands([0, width], .1);
Run Code Online (Sandbox Code Playgroud)

由于D3版本4.0 d3.scale.ordinal()是现在d3.scaleOrdinalrangeRoundBands似乎消失了.

> d3.scaleOrdinal()

{ 
  [Function: scale]
  domain: [Function],
  range: [Function],
  unknown: [Function],
  copy: [Function] 
}
Run Code Online (Sandbox Code Playgroud)

这个代码的D3 v4相当于什么(来自Mike Bostock的条形图示例)?

var x = d3.scale.ordinal()
  .rangeRoundBands([0, width], .1);
Run Code Online (Sandbox Code Playgroud)

Ger*_*ado 73

在D3 4.x rangeRoundBands被转移到新的Band规模:

d3.scaleBand()
    .range([range])
    .round([round]);
Run Code Online (Sandbox Code Playgroud)

这相当于:

d3.scaleBand()
    .rangeRound([range]);
Run Code Online (Sandbox Code Playgroud)

这是API:https://github.com/d3/d3-scale#band-scales

  • 所以替换是`var x = d3.scaleBand().rangeRound([0,width])`最后.谢谢! (16认同)
  • 你知道,我真的认为他们打破了这一切是一个坏主意.它只是让一切变得更难! (3认同)

Nan*_*hou 59

var x = d3.scale.ordinal()
    .rangeRoundBands([0, width], .1);
Run Code Online (Sandbox Code Playgroud)

以上计算波段并设置波段之间的填充.在第4节中,等价物是

var x = d3.scaleBand()
    .rangeRound([0, width])
    .padding(0.1);
Run Code Online (Sandbox Code Playgroud)