2016-04-28 32 views
0

これはおそらく書かれている最悪のコードですが、私には負担してください、私は本当にD3(まだ)のハングを取得していません。x軸のラベルが完全に表示されない

だから私は、ハックのコードの多くを含む、以下のグラフhttps://jsfiddle.net/El4a/sfu07q67/6/

を持っています。私が必要とするのは、最後の12ヶ月のデータを表示し、最後に表示された月を現在の月とすることです。したがって、この場合(4月)x軸の範囲はmay(2015)からapril(2016)です。これと同じように:

enter image description here

グラフを表示上のデータが正しく、これまでのところgoed。

しかし、ラベルは本当の苦痛です。私はそれらをほぼ完璧に持っていますが、いくつかの奇妙な理由のために、最も古い(may)と現在の(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

ところで、x軸はページ(図)のサイズ変更後に消えてしまいますが、同じですか? –

+0

はい私はまだ気づいていますが、少なくとも私の心配は今のところでもあります;-) – Ayamei

答えて

1

問題は、xAxisのtickFormat実装にあります。何らかの理由で、count変数が0から13まで実行され、最後の2回、12と13のxにアクセスすると、戻り値は未定義です。

は以下にごtickFormat機能を変更

、それが動作するはずです:

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

注D-1。

+0

これは本当にありがとうございます。ただし、プロパティを追加する: '.showMaxMin(false)'をchart.xAxisに追加すると、問題が修正されます。奇妙な!それを完全に理解していないが、私はあなたの方法がより良いと信じる=) – Ayamei

関連する問題