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
相关产品推荐
相关产品推荐

