梦入琼楼寒有月,行过石树冻无烟

D3 序数比例尺

序数比例尺(Ordinal Scale)所定义的定义域都是离散且不会连续的,即为序数比例尺,通常是在场景中最为常用的比例尺之一,如通过输入一个离散值来获取得到另一个离散的值,我们就可以通过使用序数比例尺来实现。

ID DA FA
d3.scale.ordinal() 定义序数比例尺
ordinal(y) 输入定义域离散值返回值域内的一个离散值
ordinal.domain() 设定或获取定义域
ordinal.range() 设定获取值域
ordinal.rangePoints(间隔(interval) [间距(padding)]) 代替 range() 定义值域,并接受一个连续区间,之后根据定义与中离散值的数量将其分段。之后的出的分段值用于值域中的离散值
ordinal.rangeRoundPoints ,与 ordinal.rangePoints()作用一样,但是结果会被取整
ordinal.rangeBands(间隔 (interval) [内边距 (padding) ]) 代替 range()定义值域,与rangePoints类似,但分段方法不同
ordinal.rangeRoundBands() ,与rangeBands类似,但结果会被取整
ordinal.rangeBand() 返回使用 rangeBands() 设定后的每一段参数
ordinal.rangeExtend() 返回一个数组,数组中存放着最大值以及一个最小值

rangePoints()

1
2
3
4
5
6
7
8
var ordinal = d3.scale.ordinal()
.domain([1,2,3])
.range([10,20,30])

console.log(ordinal(1))
console.log(ordinal(2))
console.log(ordinal(3))
console.log(ordinal(4))

在上述的code中,当定义域内数据大于值域时,那么多出的定义域值将会重新轮回一遍值域为止。但此方法来定义值域或许有些麻烦,所以我们可以通过使用rangePoints()来解决:

1
2
3
4
5
6
var ordinal = d3.scale.ordinal()
.domain([1,2,3,4,5])
.rangePoints([0,1000])

console.log(ordinal.range())
console.log(ordinal(2))

通常,我们使用rangePoints(interval,padding),其中interval[0,200],而padding是一个缺省值,之后计算得出step是根据定义域与数值计算得到的值,因为我们并没有设置padding,所以间距默认为50,而计算出的值就是圆的对应点。:

1
2
3
4
5
var ordinal = d3.scale.ordinal()
.domain([1,2,3,4,5])
.rangePoints([0,100],5)

console.log(ordinal.range())

padding那边距设置为5,那么当step * padding / 2 时,那么将会的出第一个圆的位置坐标,在下述 code 中:

1
2
3
4
5
var ordinal = d3.scale.ordinal()
.domain([1,2,3,4,5])
.rangePoints([0,200],5)

console.log(ordinal.range())

rangePoints替换为rangeRoundPoints()来四舍五入取整的数据,此时如果上述 code 输出55.55555555555,那么将会被四舍五入56。就如四舍五入后的结果为56、78、100、122、144,那么我们从55.55555555555556 - 77.77777777777777可以得知,step22.222222222222214,那么通过step * padding / 2 将会得出第一个结果的坐标。

RangeBands()

rangeBands()与rangePoints同样是代替 range()定义值域,与rangePoints类似,其分段方法为outerPadding、padding、outerPadding其中outerPadding主要是边界的空白参数(默认为0)。

1
2
3
4
5
var ordinal = d3.scale.ordinal()
.domain([1,2,3,4,5])
.rangeBands([0,200],2,3)

console.log(ordinal.range())

在上述的 code 中,我们首先定义了interval[0,200],将paddingouterPadding分别设置为2和3,那么输出的信息将会是最终是圆的位置坐标。那么最终经过计算,他的outerPaddingPadding分别22.22222222222223、22.222222222222214。通常从字面上意思来进行理解outherPadding就是圆开头与结尾处即两边的空白距离,就为outerPadding

⬅️ Go back