更改x轴上的刻度

Wea*_*ped 33 d3.js

我想弄清楚d3.js. 在定义轴时,如何在x轴上获得自定义标签.例如,我得到的默认标签是:

|------|------|------|------|------|------|
20    30     40     50     60     70     80
Run Code Online (Sandbox Code Playgroud)

然而,我想要的东西:

|------|------|------|------|------|------| ....
20    26      32    38     44     50     56
Run Code Online (Sandbox Code Playgroud)

我目前正在学习它,并从提供的官方示例中处理代码(略微修改):

var xAxis = d3.svg.axis().scale(x).tickPadding(7).orient("bottom");
var yAxis = d3.svg.axis().scale(y).tickPadding(5).orient("left");
Run Code Online (Sandbox Code Playgroud)

mbo*_*ock 65

定量刻度的默认刻度是2,5和10的倍数.您似乎需要6的倍数; 虽然不寻常,但根据底层数据的性质,这可能是有意义的.因此,虽然您可以使用axis.ticks来增加或减少滴答计数,但它总是会返回2,5和10的倍数 - 而不是6.

如果需要6的倍数,可以使用axis.tickValues显式指定刻度值.这通常与d3.range一起使用.例如:

xAxis.tickValues(d3.range(20, 80, 4));
Run Code Online (Sandbox Code Playgroud)

如果要动态计算值,请使用x-scale的域来检索最低和最高值.另外请记住,范围的上限是独占的,因此在上面的示例中,最大刻度值为76.您可以通过使范围的停止值稍大(例如,81)来使上限包含.

  • @mbostock,我在量化范围内有24个类别,但在我的xAxis中添加.ticks(6)什么也没做 - 所有24个仍然显示.有任何想法吗? (6认同)
  • @mbostock。如果我的xAxis标签是日期怎么办?如何跳过标签? (2认同)