2016-08-22 4 views
0

を私はJavaScriptで日付の配列があります。現在、より多くの日付を)は(日付の配列でX-Axisを作成するオブジェクト - D3.js

dates = [Fri Jan 02 2015 00:00:00 GMT-0600 (CST), 
Mon Jan 05 2015 00:00:00 GMT-0600 (CST), 
Tue Jan 06 2015 00:00:00 GMT-0600 (CST), 
Wed Jan 07 2015 00:00:00 GMT-0600 (CST), 
Thu Jan 08 2015 00:00:00 GMT-0600 (CST), 
Fri Jan 09 2015 00:00:00 GMT-0600 (CST), …] 

を。私はそれらを必要に応じて解析することができます - D3.jsで、またはこれをDate()形式に保ちます。私は自分のタイムスケールx軸に、これらの日付のティックだけを持たせたい(週末や休日をスキップしていることに気付く)。これはD3でも可能ですか?私は現在試しています

timeScale = d3.time.scale() 
    .domain(dates) 
    .range([0, width]) 
    .clamp(true); 

しかし、これは動作しません。 .domain([minDate, maxDate])を使用しますが、週末と休日が含まれます。

答えて

1

d3.time.scale()はこれを念頭に置いて設計されていないため、短い答えは「ノー」と思われます。ボストック(D3の作成者)によると

:あなたは連続、量的変数として時間を表示したいとき

d3.time.scaleは、あなたが考慮に入れたいときなど、使用すべきです実際の日数は夏時間の変更により23〜25時間の範囲になり、年数はうるう年のために365〜366日に変わる可能性があります。 継続時間と通常のカレンダー単位のすべての不規則性をプロットしたくない場合は、おそらくd3.time.scaleを使用したくなく、代わりにd3.scale.linearが必要です。

このように、あなたのケースでは、より良いアプローチは、リニアスケールを作成し、このようなあなたの日をマッピングすることになります。

Fri Jan 02 --> 1 
Mon Jan 05 --> 2 
Tue Jan 06 --> 3 
Wed Jan 07 --> 4 
Etc... 

また、あなたはボストックからこの実装を見てすることができます、(私はそれを試したことがない)平日の数値や日付の間で変換します

https://gist.github.com/mbostock/5827353

+0

グレート - 感謝。決定的な答え、ちょうど序数のスケールを使用する必要があります。 – Jared

+1

最初に線形を試してください。面白いことは序列で起こることがあります。 –

関連する問題