.ticks()工作需要什么?

Sam*_*off 11 d3.js

.ticks()似乎没有在我的条形图上工作.有人可以看看吗?

这是小提琴.我在对象开头附近的x轴上设置了刻度:

xAxis = d3.svg.axis().scale(xScale).orient("bottom").ticks(3),
Run Code Online (Sandbox Code Playgroud)

All*_*lly 12

我没有足够的声誉为第一篇文章添加评论,但我认为存在误解.

轴上的标签必须是2,5或10的倍数.刻度函数可以取任何数字,但它会修改该数字以确保轴是2,5或10的倍数.

例如,如果域名为0-100并且您想要4个刻度(0,33.33,66.66,100),它将向上舍入为6以给出"漂亮"数字(0,20,40,60,80,100) .但是,如果你将刻度设置为3,它将尊重它,你将拥有0,50和100.

以下是迈克对此行为的解释.

我仍然不清楚为什么如果你将刻度设置为5,它将不会计数0,25,50,75,100,但我认为我会尝试清除至少一些混乱.


小智 7

刻度只能是2,5,10的倍数而不是任何数字.这就是你可能遇到问题的原因.请查看此答案以获取自定义刻度.链接

  • 谢谢你指出这一点,我忘了它.我实际上在1月份对这篇文章发表了评论,看似相同类型的问题:一个包含24个类别的条形图,每小时一个.不幸的是,`.ticks(5)`也不适用于我. (2认同)

duh*_*ime 5

您可以使用过滤器来决定显示哪些刻度:

var xAxis = d3.svg.axis()
    .scale(x)
    .tickValues(x.domain().filter(function(d, idx) { return idx%2==0 }))
    .orient("bottom");
Run Code Online (Sandbox Code Playgroud)

上面的截图来自这个例子