我想知道为什么这个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.*
、xScale
和yScale1
轴都被正确定义(或者我认为是这样),因为它们被正确渲染。
问题是,它生成了所有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控制台错误。
有什么想法吗?先谢谢你了。
1条答案
按热度按时间oxosxuxt1#
data()
方法将一个数组元素绑定到一个DOM元素。也就是说,你不需要308个路径,你只需要一个包含308个数据点的路径。因此,将所有内容 Package 在一个外部数组中,该数组只有一个元素: