2017-04-09 51 views
2

我正在試圖在我的網站上實現一個d3.js直方圖,它從solr響應中獲取數據。在我的研究中,我發現Mike Bostock誰提供卓越的D3解決方案。其中之一就是「Histogram II」,它完全符合我的需求。問題是它(和我發現的所有其他可比解決方案)都帶有.csv作爲數據源。我想使用數組作爲數據源,但因爲我嘗試更改輸入而失敗。將.csv中的D3.js輸入格式更改爲日期數組

能否請您給我一個提示該行必須改爲使用下面的陣列,這是目前基於邁克Bostocks .csv:將

my_data = [ 
    {"id": "10097071", "case": "HY285524", "date": "06/02/2015 09:41:19 PM"}, 
    {"id": "21907", "case": "HY291065", "date": "06/07/2015 03:50:00 AM"} 
    ] 

在此先感謝。

+0

編輯:Gerados問題消失了。他問我是否解析日期。 @GerardoFurtado我避免完全複製Mike Bostocks代碼。如果我正確解釋它,那麼日期會在他的解決方案中被「d3.timeParse(」%m /%d/...)「解析。」我正在用他的'd3.csv(「homicides.csv」,類型,函數(錯誤,數據)「我不能說」使用數組「 – Alexander

+0

我刪除了我的評論,因爲我認爲這顯然是你解析日期。現在我看到你沒有解析日期:'parseDate'變量只是定義了說明符,在Bostock的代碼中,日期在accessor(row)函數中被解析,然而,如果你使用一個變量來存儲數據,那麼就沒有訪問函數。 ,你必須使用'forEach'或類似的東西 –

回答

2

在博斯托克的原代碼,在date字符串由type功能解析,通過d3.csv稱爲一排功能:

function type(d) { 
    d.date = parseDate(d.date); 
    return d; 
} 

既然你打算使用一個變量來保存你的數據陣列,擺脫d3.csv完全,你必須解析date字符串的其他方式。例如,你可以使用一個forEach

data.forEach(function(d){ 
    d.date = parseDate(d.date) 
}) 

這裏是演示,我只是修改博斯托克的代碼使用數組,而不是一個CSV文件:https://bl.ocks.org/anonymous/bb0d820fbca8fbdf0f8827b0edbcbd44。查看data陣列後的forEach

+0

你真棒,謝謝你!:)對於一個測試我複製粘貼它,它工作正常。當然,我會重建你的解決方案,以獲得更深入的瞭解。 – Alexander