尝试使用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]