1. ホーム
  2. javascript

[解決済み] D3 v4 .rangeBand()相当

2022-02-11 12:32:03

質問

D3バージョン4.xでは。 d3.scale.ordinal() に変更されました。 d3.scaleOrdinald3.rangeRoundBands に変更されました。

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

帯の幅を求めるには、次のようにするとよいでしょう。 d3.rangeBand() ?

解決方法は?

バンドスケールでバンドの幅を求めるには、次のようにします。

scale.bandwidth();

によると 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")
<script src="https://d3js.org/d3.v5.min.js"></script>

ご覧のように、帯域幅はドメイン内の要素数、範囲の広さ、パディングに依存します。以下は、上の同じスニペットで、パディングを使用した場合です。

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")
<script src="https://d3js.org/d3.v5.min.js"></script>