我正在尝试复制在d3js中转换的条形图的this example。但是,当我将数据输入.json文件时,我收到错误“无法调用方法'forEach'未定义”所以我很确定我正在调用.json文件错误。我已经正确地更改了我的变量的名称,这些变量是日期而不是文本,所以也许这会弄乱一些东西:
这是我的.json文件:
[{"network":"ABC","2002":9860,"2003":10596,"2004":9989,"2005":12217,"2006":12281,"2007":11913,"2008":12265,"2009":11050,"2010":9595,"2011":9871,"2012":8339},
{"network":"AZA","2002":0,"2003":0,"2004":0,"2005":0,"2006":213,"2007":0,"2008":0,"2009":201,"2010":236,"2011":212,"2012":0},
{"network":"CBS","2002":13959,"2003":13856,"2004":13581,"2005":12843,"2006":13019,"2007":11726,"2008":11274,"2009":11812,"2010":12538,"2011":12284,"2012":10690}]
我是怎么称呼的:
var json
d3.json("data.json", function(error, result){
json = result;
var data = [];
json.forEach(function(d){
data.push({variable: +d['2002'], network: d['network']});
});
x.domain(data.map(function(d) { return d.network; }));
y.domain([d3.min(data, function(d) { return d.variable; }), d3.max(data, function(d) { return d.variable; })]);
任何帮助将不胜感激!
答案 0 :(得分:0)
您的D3js代码没有任何错误。可能是json文件无法访问(根据代码,json文件应该驻留在HTML文件的同一文件夹中)。 你可以使用“console.log(json);”就在“json = result;”之后如果从文件中读取数据,您将在“FireBug”或“开发人员工具”的控制台中找到它(在chrome中)
答案 1 :(得分:0)
您可能拥有比示例中旧版本的D3。我遇到了同样的问题,发现我的D3版本在json函数上没有错误参数,因此传递的第一个参数(错误,为null)应该是JSON字符串。所以我发现的两个解决方案是:
(1)切换参数以使JSON成为第一个:
d3.json("data.json", function(result, error){ ...
或者只是完全删除错误参数。
(2)更新到d3.v3.js。
答案 2 :(得分:0)
感谢您报告此问题, 您的错误是因为您的json文件无法访问。