我對d3和javascript一般都還是個新手,所以我所見過的大多數做法都與簡單的數組有關,但從不是對象。現在,我試圖通過使用json文件中的數據來創建一個構成一週數據的簡單圖表。首先,數據結構頗像與任意值如下:過濾d3.js的JSON數據
{"2013-08-21":{"orders":"10","revenue":"1000"},
{"2013-08-22":{"orders":"20","revenue":"1800"},
{"2013-08-23":{"orders":"15","revenue":"1200"},
...}
,我要面對現在試圖找出如何有效地傳遞日期,使用XScale域,以及問題訂單或收入放入yScale域。如果它是一個CSV或TSV文件,我可以只使用這樣的:
xScale.domain(d3.extent(data, function(d) {return d.date;}));
yScale.domain(d3.extent(data, function(d) {return d.orders;}));
但是,當我試圖做同樣的事情JSON對象,它告訴我下面的:
Uncaught TypeError: #<Object> is not a function
能有人請幫助闡明這個問題?我可以嘗試爲日期,訂單和收入創建列表數組,但是還有其他方法嗎?
謝謝你的時間!
編輯
當我嘗試導入JSON文件後,將數據映射會發生類型錯誤:
d3.json("report.json", function(error, json) {
if (error) return console.warn(error);
dataset = json;
dataset = dataset.map(function(d){
var date = d3.keys(d)[0];
d[date].date = date;
return d[date];
});
});
具體而言,在這一行:
dataset = dataset.map(function(d){ ... })
Uncaught TypeError: Object #<Object> has no method 'map'
拋出'TypeError'的實際代碼是什麼? – nrabinowitz
嗨nrabinowitz,請參閱上面編輯部分。謝謝! – peianwu
對不起,我想我可能已經想出瞭如何將數據重新組織爲我需要的格式。感謝您的建議! – peianwu