我做了一个图,但是看起来不对,我去了控制台,没有看到错误。我运行了一段代码,line().x(function(i){return x(i);})
并且两次都line().y(function(d){return y(d);})
获得TypeError: Cannot read property 'length' of undefined
了
更新运行line()给我同样的错误
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);})
第一件事是d3.svg.line()
实际上并没有创建一条线。它创建一个路径生成器,该生成器将获取一些数据并将其转换为svg路径。
您需要将data
数组绑定到svg路径,然后设置路径的"d"
属性。看起来像这样:
svg_path_element.data(data).attr("d", line).
您的路径生成器也定义不正确。函数的d
和i
参数不是特殊名称,它们是由位置定义的。您希望x值使用索引,但是由于匿名函数只有一个参数,i
因此仍然存在数据绑定。您实际上需要给匿名函数两个参数,即使您不使用参数,例如.x(function(d, i) { return x(i) })
。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句