d3中有一个和坐标轴相关的方法,即axis.ticks().但是它的用法让人琢磨不透,本文就试图通过一些案例来对其进行详细的解释。
axis.ticks()用来设定分段数量
当通过比例尺创建一个y坐标轴的时候,可能你只想让你的y轴坐标刻度只显示两个,即只有收尾,怎么办?把ticks()参数设为1即可:
let scale = d3.scale.linear()
.domain([0, 100])
.range([0, 300])
let axis = d3.svg.axis()
.scale(scale)
.orient('left')
.ticks(1)
设为1表示整个y轴被分为1段,两头都会出现一个刻度,所以就会出现两个刻度。同样的道理,设置为2则会出现两段三个刻度,设置为5则会出现5段6个刻度。
然而,当你设置为3的时候,奇怪的事情发生了。并没有出现3段4个刻度的结果,而是出现了2段3个刻度。这是怎么回事呢?
axis.ticks()的分段规则
之所以3不起作用了,是因为定义域domain中的[0, 100]无法计算得出对应的结果。在这个回答里,mbostock指出,无论你怎么设定,ticks的参数实际上都是在2,5和10这三个中选。
The default ticks for quantitative scales are multipl