我对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