在D3中创建一个阶跃比例

Create a step scale in D3

本文关键字:一个 D3 创建      更新时间:2023-09-26

我有一个基本的规模看起来像这样:

        var yScale = d3.scale.linear()
          .domain([0, totalCount])
          .range([0, containerHeight]);

现在,当我把一些东西放进去,比如yScale(6),它可以返回一个浮点数,但我希望它返回一个代表我的网格中的行号的数字。因此,如果值在某个范围内,则返回1,如果在另一个范围内,则返回2,以此类推。我想我需要计算值是否在范围内并返回自定义值。

我该怎么做?

d3提供了离散范围值和连续域的量化尺度。

var yScale = d3.scale.quantize()
          .domain([0, 50])
          .range([1, 2, 3, 4, 5, 6, 7, 8, 9, 10]);

在这种情况下,对于[0,5)的值,您将得到1,对于[5,10)的值,您将得到2,以此类推。

[0,5)表示0包含但5不包含,即4.9999将返回1而5将返回2

range函数有第三个参数,即step。希望对你有帮助。

d3.range([start, ]stop[, step])
d3.range(0, 1, 0.2) // [0, 0.2, 0.4, 0.6000000000000001, 0.8