D3.js xAxis tickformat周数

时间:2016-06-02 08:43:58

标签: datetime d3.js momentjs

尝试使用tickformat在x轴上显示时,ISO周数不正确。

var parseDate = d3.time.format("%Y%W").parse;
var x = d3.time.scale().range([0, width]);
x.domain([parseDate("201552"), parseDate("201602")]);

var xAxis = d3.svg.axis().scale(x)
.orient("bottom")
.ticks(d3.time.monday,1)
.tickFormat(d3.time.format("%W"))

除了具有53周的年份之外,这在大多数情况下都能正常工作。 示例:从201552周到201602周。在这种情况下,它总是跳过第53周,所以我得到的是[52,01,02]。虽然预期产量为[52,53,01,02]。 Here is my code

我还尝试使用momentjs解析日期字符串,因为我遇到了这个问题skip week in d3.time.format

这是使用momentjs解析日期的修改代码:

var parseDate = function(d){
        return moment(d, "YYYYWW").toDate();
    }
x.domain([parseDate("201552"), parseDate("201602")]);
var MultiFormat = d3.time.format.multi([
      ["%W", function(d) {
          return moment(d).isoWeek();
      }],
    ]);
var xAxis_weeks = d3.svg.axis().scale(x)
        .orient("bottom")
        .ticks(d3.time.monday,1)
        .tickFormat( function(d) {return MultiFormat(d);})

现在输出是[51,52,01,02],也应该是[52,53,01,02]

0 个答案:

没有答案
相关问题