2013-11-25 60 views
1

我很困惑日期由酒窩(或者也許它只是D3)處理的方式。酒窩時間格式雜耍

我的問題可以在兩個問題可分爲:

  1. 我的日期來作爲我的csv文件格式%Y-%m-%d %H:%M:%S列。爲了將它們轉換爲日期對象,我目前使用的是我以前在「vanilla」d3中使用過的同一個循環。

    data.forEach(function (d) { 
        var format = d3.time.format("%Y-%m-%d %H:%M:%S"); 
        d.Date = format.parse(d.Date); 
    }); 
    

    有沒有更快的方法來做到這一點?也許與timeField function?或者dateParseFormat?我可能是錯的,但這些函數看起來像助手來處理日期。

  2. 我想控制我的時間對象的主要原因是能夠重新格式化它們。文檔似乎表明tickFormat function可用於此。不幸的是,我也沒有使用它。我最好的猜測:

    var x = myChart.addCategoryAxis("x", "Date");

    x.tickFormat(d3.time.format("%Y-%m")); // For example for a year-month format

只返回

x.tickFormat不是一個函數

非常感謝,

Xavier

回答

3

時間格式與時間軸有關。如果你想使用時間軸你不需要你的循環,只需使用:

myChart.addTimeAxis("x", "Date", "%Y-%m-%d %H:%M:%S", "%Y-%m"); 

其中「%Y-%間%d%H:%M:%S」是你輸入「 %Y-%m「是你的輸出格式。 「x.tickFormat不是函數」的原因是它不是:)。您可以設置通過時間軸的屬性使用的tickFormat如果你願意,但如果你使用上面的工廠方法不要求:

myTimeAxis.tickFormat = "%Y-%m"; 

但是,這只是一個時間軸的作品。

在行動的時間軸的例子可以在這裏找到:

http://dimplejs.org/advanced_examples_viewer.html?id=advanced_time_axis

希望幫助

約翰

+0

非常感謝約翰,超清晰! – xav

+0

所以,對於線條/面積圖表來說,它是完美的,但是如果我想要做一個條形圖,我需要使用addCategoryAxis來獲得合適的條寬。那樣的話,我還能避免我的循環嗎?編寫'.addCategoryAxis(「x」,「Date」,「%Y-%m-%d%H:%M:%S」,「%B%d」)似乎不那麼容易:': ) – xav

+0

恐怕不是。如果要指定條的寬度,則可以在時間軸上使用floatingBarWidth(https://github.com/PMSI-AlignAlytics/dimple/wiki/dimple.axis#wiki-floatingBarWidth),否則您需要返回到你的循環並使用類別軸。 –