D3 v4 .rangeBand()等效

cpd*_*cpd 30 javascript svg d3.js

在D3版本4.x中,d3.scale.ordinal()已更改为d3.scaleOrdinald3.rangeRoundBands已更改为:

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

要找到一个乐队的宽度,相当于d3.rangeBand()什么?

Ger*_*ado 53

要在带尺中找到波段的宽度,您必须使用:

scale.bandwidth();
Run Code Online (Sandbox Code Playgroud)

根据该API,bandwidth():

返回每个波段的宽度.

这是一个演示:

var scale = d3.scaleBand()
  .domain(["foo", "bar", "baz", "foobar", "foobaz"])
  .range([0, 100]);
  
console.log("The width of each band is " + scale.bandwidth() + " pixels")
Run Code Online (Sandbox Code Playgroud)
<script src="https://d3js.org/d3.v5.min.js"></script>
Run Code Online (Sandbox Code Playgroud)

如您所见,带宽取决于域中元素的数量,范围的范围和填充.这是上面相同的片段,带有填充:

var scale = d3.scaleBand()
  .domain(["foo", "bar", "baz", "foobar", "foobaz"])
  .range([0, 100])
  .paddingOuter(0.25)
  
console.log("The width of each band is " + scale.bandwidth() + " pixels")
Run Code Online (Sandbox Code Playgroud)
<script src="https://d3js.org/d3.v5.min.js"></script>
Run Code Online (Sandbox Code Playgroud)