2016-04-28 209 views
0

我知道这可能是有史以来最差的代码,但请耐心等待,我真的没有得到D3(尚未)的挂钩。x轴标签没有完全显示

所以,我有如下的图https://jsfiddle.net/El4a/sfu07q67/6/

含有大量的哈克代码。我需要的是显示过去12个月的数据,最后显示的月份是当前月份。因此,在这种情况下(今年四月),x轴的范围从五月(2015)到四月(2016)。像这样的:

enter image description here

上正确的图表显示的数据,到目前为止所以GOED。

然而标签却是一个真正的痛苦。我已经得到他们几乎不错,但由于一些古怪的原因,最古老的(可能)和当前(四月)月份不显示。

我有点排序月份的名称以正确的顺序:

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

顺便说一句,页面(图表)调整大小后x轴会消失,对你也一样? –

+0

是的,我注意到,至少,我的担忧,尽管现在;-) – Ayamei

回答

1

问题在于您的xAxis的tickFormat实现。出于某种原因,您的count变量从0到13,当您访问x最后两次12和13时,返回值是未定义的。

更改tickFormat功能下面,它应该工作:

.tickFormat(function(d) { 
    return x[d-1];  
}); 

注意d-1。

+0

这确实很有用,谢谢。但是,向chart.xAxis添加属性:'.showMaxMin(false)'也解决了问题!奇怪的!不完全理解它,但我相信你的方式更好=) – Ayamei