2016-09-19 62 views
3

任何人都可以幫助初學者d3'er?我已經使用d3創建了一個散點圖,它顯示x軸上的歸檔日期(文檔系列)和y軸上的#系列成員。圓點都是相同的半徑,並按狀態進行顏色編碼。我有一個csv文件格式的300多個數據記錄,除了前4個數據記錄外,其他都完美無缺。所有的日期都是post 1900.d3日期/時間標繪出100年

下面包括了csv數據集的前9行(我在這裏用了換行符來使它更易讀)。前4條記錄是在實際日期+100年繪製出來的。例如1934年的地塊爲2034年......但3月11日-75日和~300人全部按預期繪製。數據來自Excel電子表格,所有日期單元格的格式都是相同的,都顯示正確的4位數日期年份,而沒有任何行爲是文本字符串而不是日期。 Excel中的日期顯示格式爲dd-mmm-yy。

Num,Word,FilingDate,Status,Type,FamNum 
63872,Word1,23-May-34,Removed,Word,2 
69105,Word2,19-Oct-36,Registered,Word,1 
175164,Word3,31-Jul-62,Registered,Word,6 
207804,Word4,1-Feb-67,Registered,Word,6 
291765,Word5,3-Nov-75,Registered,Word,12 
381067,Word6,15-Sep-82,Removed,Word,2 
381069,Word7,15-Sep-82,Removed,Word,2 
402936,Word8,27-Jan-84,Removed,Word,2 
410476,Word9,20-Jun-84,Removed,Word,2 

我已經包含在HTML代碼,這是工作,但所有的前4個記錄如下。

// Parse the date/time 
var parseDate = d3.time.format("%d-%b-%y").parse; 

有沒有人有什麼建議可能會發生干擾? 謝謝。

回答

3

你將不得不稍微製作一個你想要的日期。

而不是使用

var parseDate = d3.time.format("%d-%b-%y").parse; 

創建一個新的函數來分析您的日期:

var parseDate = function(d){ 
    var last2 = parseInt(d.slice(-2)); 
    var date = d3.time.format("%d-%b-%y").parse(d) 
    if(last2 < 69){//if year is less than 69 then change the year 
      date.setFullYear(1900 + last2);//will generate 1900 date 
    } 
    return date 
} 
+3

這是正確的。雖然:['d3_time_expandYear()'](https://github.com/d3/d3/blob/9cc9a875e636a1dcf36cc1e07bdf77e1ad6e2c74/src/locale/time-format.js)將很高興看到解釋和對罪魁禍首的引用#L300-L302) – altocumulus

+1

哇!感謝您提出這個問題.. – Cyril

+0

我真正害怕的是事實,它是68,而正常的JS日期使用Unix參考時間戳1970年1月1日。我很好奇,如果有人可以爲此解釋! – altocumulus

相關問題