1

我正在尝试复制这个在 d3js 中转换的条形图示例。但是,当我将数据输入 .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; })]);

任何帮助将非常感激!

4

3 回答 3

0

您的 D3js 代码没有任何错误。可能是 json 文件无法访问(根据代码,json 文件应位于 HTML 文件的同一文件夹中)。您可以使用“console.log(json);” 就在“json = result;”行之后 如果从文件中读取数据,您将在“FireBug”或“开发者工具”的控制台中找到它(在 chrome 中)

于 2013-09-20T08:35:46.030 回答
0

您的 D3 版本可能比示例中的版本旧。我遇到了同样的问题,发现我的 D3 版本在 json 函数上没有错误参数,所以传递的第一个参数(错误,为 null)应该是 JSON 字符串。所以我找到的两个解决方案是:

(1) 将参数切换为先有JSON:

d3.json("data.json", function(result, error){ ...

或者完全删除错误参数。

(2) 更新到 d3.v3.js。

于 2016-03-21T11:44:53.737 回答
0

感谢您报告这个问题,您的错误是因为您的 json 文件无法访问。

于 2016-03-21T11:51:06.563 回答