This highcharts admin response解释说这本身不可能:
没有选择使用当月的最后日期,但你可以 创建自己的tickPositioner回调
我已经遵循了建议,但无论tickPositioner功能如何,似乎没有任何改变! I've created an isolated demo of the issue here. [只添加了{+ 3}}并添加了定位器。]
在jsFiddle示例中,您可以在下面看到我的tickPositioner。我减去一天(60*60*24*1000
)15次(*15
)。十五是随机的只是为了表明那里没有影响。
xAxis:{
//LOOK HERE!
tickPositioner:function(){
return _.forEach(this.tickPositions, function(date){
console.log('date',date, new Date(date), new Date(date - 60*60*24*1000*15));
//return date; //uncomment to show orginal dates
return (date - 60*60*24*1000*15);
});
//LOOK HERE!
}
},
额外说明:
我可以告诉滴答作者正在做某事,因为我可以:
我怀疑日期格式和最小刻度间隔都有变化。在官方的高级字母this example中,我可以看到它有效,但是如果你减少自定义增量,你可以看到一个类似的问题,它对蜱位置没有影响。
答案 0 :(得分:2)
First and foremost I believe your problem is with the use of forEach
of lodash. It doesn't return what you think it returns. From the documentation包裹
_.forEach(collection, [iteratee=_.identity], [thisArg])
...
<强>返回强>
(Array | Object | string):返回
collection
。
话虽如此,这是在每个月末尝试你的整体问题:
$('#container').highcharts('StockChart', {
xAxis:{
tickPositioner:function(min, max){
var result = [];
var current = min;
while(current < max) {
var date = new Date(current);
var lastDate = new Date(date.getFullYear(),
date.getMonth() + 1,
0,
0,
-date.getTimezoneOffset());
var nextDate = new Date(date.getFullYear(),
date.getMonth() + 1,
1,
0,
-date.getTimezoneOffset());
result.push(lastDate.getTime());
current = nextDate.getTime();
}
result.info = this.tickPositions.info;
return result;
}
},
// ...
});
请参阅this JSFiddle demonstration的外观。代码可能还有改进的余地。