2016-08-22 54 views
0

我有日期的在JavaScript的數組:創建X軸與日期的陣列()對象 - 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

先嚐試線性。有趣的事情可以發生在序數量級上。 –