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

D3.js v7中chord.groups等价用法问题求助

D3 v7弦图中chord.groups为undefined的解决方法

问题核心是D3 v3到v7的弦图布局API调用逻辑发生了变化,属于版本迭代带来的用法差异:

  • 在D3 v3中,d3.layout.chord()创建的布局对象本身带有groups()方法,直接调用就能获取分组数据。
  • 但到了D3 v7,d3.chord()返回的是一个布局函数,必须先把矩阵传入这个函数,得到的chords数组才会附带groups属性。

正确的v7代码流程如下:

// 1. 创建弦图布局(可按需配置参数)
const chordLayout = d3.chord()
  .padAngle(0.05) // 设置分组间的间距
  .sortSubgroups(d3.descending); // 设置子组的排序规则

// 2. 传入矩阵生成完整的弦图数据(这一步才会生成groups属性)
const chords = chordLayout(matrix);

// 3. 此时可正常访问groups并绑定数据
const groupG = svg.selectAll(".group")
  .data(chords.groups)
  .enter().append("g")
  .attr("class", "group");

你之前的v7代码应该是直接访问了布局函数本身的chord.groups,而非调用布局函数后得到的chords.groups,这才导致了undefined的问题。

另外补充:v7中弦图的其他细节也有调整,比如原v3里的chord.chords()方法,现在直接对应调用布局函数后得到的chords数组本身,无需额外调用方法。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.31 23:15:34