1

我正在通过 d3.js.org 上的示例学习 d3.js

我从http://bl.ocks.org/3883195的“面积图”开始

我试着自己输入它,这样我就能理解变量和函数。

该脚本调用 data.tsv 来制作图表。

好吧,在加载 data.tsv 时,我收到“'undefined' is not an object”错误。

所以我摆弄了一些,然后继续将 bl.ock 的原始代码复制并粘贴到我的编辑器中,将他的 d3.v3.js 更改为 d3.v2.js

同样的错误。

我觉得我的机器上正确的目录中有 data.tsv,与 d3.v2.js 相同的目录。

此处第二行引发的错误:

    d3.tsv("data.tsv", function(error, data) { 
      data.forEach(function(d) { 
         d.date = parseDate(d.date);
         d.close = +d.close;
      });

这是错误的图片: https ://twitter.com/maggie_a_lee/status/273858397173080064/photo/1

谢谢大家!!

4

1 回答 1

6

这与 D3 库的版本有关;目前它正在从 v2 过渡到 v3:https ://github.com/mbostock/d3/wiki/Release-Notes

您正在使用的示例已针对 v3 进行了修改,但您仍在加载 v2 库。

对于 d3.tsv,两个版本之间的差异与回调签名有关:

v2:

d3.tsv("data.tsv", function(data) { 
  data.forEach(function(d) { 
     d.date = parseDate(d.date);
     d.close = +d.close;
  });

v3:

d3.tsv("data.tsv", function(error, data) { 
  data.forEach(function(d) { 
     d.date = parseDate(d.date);
     d.close = +d.close;
  });

这意味着在您的情况下,实际数据存储在错误参数中。

于 2012-11-29T07:51:45.360 回答