You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

D3.js路径缺失d属性、尺寸为0x0问题求助

问题根源
  • 你当前代码用.data(data["SAT"])直接绑定数组,导致D3为数组里每一个{x,y}对象都创建了一个<path>(也就是308个空path)。
  • D3的line()生成器要求传入完整的点数组才能生成路径字符串,但你在.attr("d", d => line(d))里给生成器传的是单个对象,不是数组,自然生成不了有效的d属性。
修复代码

只需要把数据改成数组包裹的形式,让D3只创建一个path,再把完整数组传给line生成器:

var SATPath = svg.append("g")
    .attr("class", "SAT-curve")
    .selectAll("path")
    // 把目标数组包装成单元素数组,确保只生成一个path
    .data([data["SAT"]])
    .enter().append('path')
    .attr("fill", "none")
    .attr("stroke-width", 1.5)
    .attr("transform", "translate(" + margin.left + "," + margin.top + ")")
    // 直接传入完整数组给line生成器,无需额外箭头函数
    .attr("d", line)
    .attr("stroke", colors.purple);
补充说明
  • 单个{x,y}对象无法生成路径,所以原来的308个path都没有d属性,尺寸为0x0。
  • 用[data["SAT"]]绑定数据后,enter阶段只会创建一个path元素,line生成器拿到完整的点集合,就能输出正确的路径指令。

内容的提问来源于stack exchange,提问作者andcl

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.25 00:06:25