Javascript d3为数组中的每个对象创建路径,而不是使用每个对象的x和y属性

Javascript d3为数组中的每个对象创建路径,而不是使用每个对象的x和y属性,javascript,d3.js,svg,Javascript,D3.js,Svg,我的数据结构非常小,非常简单 [{"x":0,"y":10},{"x":10,"y":35},{"x":20,"y":60}] 现在我的绘图功能(无更新模式) 注意,这是一个ES6类,因此使用this.data和this.focus(我的svg中的一个层) D3使用x和y道具渲染3个路径元素,而不是具有3个点的单个路径 是的 let lines = this.focus.selectAll('path.lines').data(this.data); lines.enter().append

我的数据结构非常小,非常简单

[{"x":0,"y":10},{"x":10,"y":35},{"x":20,"y":60}]
现在我的绘图功能(无更新模式)

注意,这是一个ES6类,因此使用this.data和this.focus(我的svg中的一个层)

D3使用x和y道具渲染3个路径元素,而不是具有3个点的单个路径

是的

let lines = this.focus.selectAll('path.lines').data(this.data);

lines.enter().append("path")
这将创建与数据数组元素数量相同的路径。 现在数据数组中有3个元素,因此生成了3条路径

应该是这样的:

let myLine = this.focus.append("path").attr("class", "lines");
这将生成一条路径

现在,通过将数据点传递给line函数,将数据点添加到此路径

myLine.attr("d", line([{"x":0,"y":10},{"x":10,"y":35},{"x":20,"y":60}]))
希望这有帮助

是的

let lines = this.focus.selectAll('path.lines').data(this.data);

lines.enter().append("path")
这将创建与数据数组元素数量相同的路径。 现在数据数组中有3个元素,因此生成了3条路径

应该是这样的:

let myLine = this.focus.append("path").attr("class", "lines");
这将生成一条路径

现在,通过将数据点传递给line函数,将数据点添加到此路径

myLine.attr("d", line([{"x":0,"y":10},{"x":10,"y":35},{"x":20,"y":60}]))

希望这有帮助

@RobertLongson sorry认为标题足够了,也添加到了问题正文中。@RobertLongson sorry认为标题足够了,也添加到了问题正文中。有趣的是,我还发现通过嵌套数组,结构是“[[{“x”:0,y:10},{“x”:10,“y”:35},{“x”:20,“y”:60}]”有趣的是,我还发现通过嵌套数组,使其结构为“[[{x:0,y:10},{x:10,y:35},{x:20,y:60}]”,它开始工作。