与d3js的JSON调用错误

时间:2013-09-18 20:09:02

标签: json d3.js

我正在尝试复制在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; })]);

任何帮助将不胜感激!

3 个答案:

答案 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文件无法访问。