无法读取undefined的属性'length'

时间:2014-07-10 13:53:52

标签: d3.js undefined

我制作了一个图表,但它看起来不正确我去了我的控制台,看到没有错误。我运行了一段代码,line().x(function(i){return x(i);})line().y(function(d){return y(d);})两次获得TypeError: Cannot read property 'length' of undefined

更新运行行()给出了同样的错误

var data = [3, 6, 2, 7, 5, 2, 0, 3, 8, 9, 2, 5, 9, 3, 6, 3, 6, 2, 7, 5, 2, 1, 3, 8, 9, 2, 5, 9, 2, 7,15];
var x = d3.scale.linear().domain([0,data.length]).range([0,wid]);
var y = d3.scale.linear().domain([0,10]).range([height,0]);
var line=d3.svg.line()
    .x(function(i){return x(i);})
    .y(function(d){return y(d);})

1 个答案:

答案 0 :(得分:1)

首先,d3.svg.line()实际上并没有创建一条线。 它创建了一个路径生成器,它将获取一些数据并将其转换为svg路径。

您需要将data数组绑定到svg路径,然后设置路径的"d"属性。 它看起来像这样:

svg_path_element.data(data).attr("d", line).

您的路径生成器也定义不正确。 函数的di参数不是特殊名称,它们是由位置定义的。您希望x值使用索引,但由于匿名函数只有一个参数,i仍然会有数据绑定。 你需要实际给匿名函数两个参数,即使你不使用它,比如.x(function(d, i) { return x(i) })