d3.js D3路径行的大小为0x0(未添加“d”属性)

ih99xse1  于 2022-11-12  发布在  其他
关注(0)|答案(1)|浏览(124)

我想知道为什么这个D3代码只是不工作:

...
        console.log(data["SAT"]);

        /*************Generic line definition************/
        var line = d3.line()
            .x(d => xScale(d.x))
            .y(d => yScale1(d.y));

        /*******************SAT line*****************/
        var SATPath = svg.append("g")
            .attr("class", "SAT-curve")
            .selectAll("path")
            .data(data["SAT"])
            .enter().append('path')
            .attr("fill", "none")
            .attr("stroke-width", 1.5)
            .attr("transform", "translate(" + margin.left + "," + margin.top + ")")
            .attr("d", d => line(d))
            .attr("stroke", colors.purple);

console.log()行只是以明显正确的方式显示数据:

[0 … 99]
0: {x: 0.0011, y: 178.75}
1: {x: 0.0011, y: 180.75}
...
94: {x: 0.0014, y: 366.75}
95: {x: 0.0014, y: 368.75}
96: {x: 0.0014, y: 370.75}
97: {x: 0.0014, y: 372.75}
98: {x: 0.0014, y: 374.75}
99: {x: 0.0015, y: 376.75}
[100 … 199]
[200 … 299]
[300 … 307]
length: 308
[[Prototype]]: Array(0)

...并且所有margin.*xScaleyScale1轴都被正确定义(或者我认为是这样),因为它们被正确渲染。
问题是,它生成了所有308条具有所有属性的路径,除了d路径,然后路径的大小为0x0:

<g class="SAT-curve">
    <path fill="none" stroke-width="1.5" transform="translate(50,30)" stroke="#8e69b3"></path>
    <path fill="none" stroke-width="1.5" transform="translate(50,30)" stroke="#8e69b3"></path>
    <path fill="none" stroke-width="1.5" transform="translate(50,30)" stroke="#8e69b3"></path>
    <path fill="none" stroke-width="1.5" transform="translate(50,30)" stroke="#8e69b3"></path>
    ....
    <path fill="none" stroke-width="1.5" transform="translate(50,30)" stroke="#8e69b3"></path> 
</g>

没有JS控制台错误。
有什么想法吗?先谢谢你了。

oxosxuxt

oxosxuxt1#

data()方法将一个数组元素绑定到一个DOM元素。也就是说,你不需要308个路径,你只需要一个包含308个数据点的路径。因此,将所有内容 Package 在一个外部数组中,该数组只有一个元素:

.data([data["SAT"]])

相关问题