我制作了一个图表,但它看起来不正确我去了我的控制台,看到没有错误。我运行了一段代码,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);})
答案 0 :(得分:1)
首先,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) })
。