我知道这可能是有史以来编写的最糟糕的代码,但请耐心等待,我真的不能掌握D3(还有)。
所以我有以下图表https://jsfiddle.net/El4a/sfu07q67/6/
包含很多hacky代码。我需要的是显示最近12个月的数据,最后显示的月份是当前月份。所以在这种情况下(4月),x轴的范围从may(2015)到4月(2016)。像这样:
到目前为止,图表上的数据显示正确。
然而,标签真的很痛苦。我觉得他们差不多好,但由于一些奇怪的原因,最老的(可能)和当前(4月)月份没有显示出来。
我有点按正确顺序对月份名称进行排序:
var months = ["Jan", "Feb", "Maa", "Apr", "Mei", "Jun", "Jul", "Aug", "Sep", "Okt", "Nov", "Dec"];
var x = [];
for (var i = 0; i < timePeriod.length; i++) {
if (timePeriod[i] === 0) {
x.push(months[timePeriod[i]]);
}
else {
x.push(months[timePeriod[i]-1]);
}
};
//result : ["Mei", "Jun", "Jul", "Aug", "Sep", "Okt", "Nov", "Dec", "Jan", "Feb", "Maa", "Apr"]
然后尝试将它们粘贴到图表上:
var count = 0;
chart.xAxis
.axisLabel('Month')
.tickValues([1,2,3,4,5,6,7,8,9,10,11,12])
.tickFormat(function(d) {
var label = x[count];
count++;
return label;
});
任何人都可以帮助我吗?
答案 0 :(得分:1)
问题在于xAxis的tickFormat实现。由于某种原因,您的计数变量从0到13运行,当您访问x最后两次,12和13时,返回值是未定义的。
将tickFormat功能更改为以下内容,它应该有效:
.tickFormat(function(d) {
return x[d-1];
});
请注意d-1。