d3.js - 在 d3.js 中对选择进行排序会干扰数据连接

标签 d3.js

当我使用 selection.sort() 对 d3 中的路径选择重新排序时,数据连接受到干扰,并且我的路径被重新分配给错误的数据对象。

我只想重新排序路径,以便一些最终位于其他路径之上(如在 z-index 中)。我不想将数据对象从一条路径重新分配到另一条路径。

如何在不干扰数据连接的情况下重新排序路径?

_friends.selectAll('path').sort(function(a, b){
  return d3.ascending(a.Q, b.Q);
});

最佳答案

听起来您需要指定 key function .这允许您通过任意键绑定(bind)数据,而不是依赖默认值,即使用数据在数组中的位置,即顺序(在您的情况下可能会更改)。

如果您还没有每个数据的唯一键,您总是可以在加载时生成它们:

var id = 0;
for (var i = 0; i < data.length; i++) data[i].id = id++;

如果您创建任何新数据,您可以继续递增 id获得一个新的、唯一的 ID。

然后,对于数据绑定(bind),您可以执行以下操作:
.data(data, function(d) { return d.id; })

关于d3.js - 在 d3.js 中对选择进行排序会干扰数据连接,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11496393/

相关文章:

javascript - D3 变焦设置

javascript - 在 d3js 中生成箭头

javascript - d3.js 绘制带有跳动外线的圆圈

javascript - 图表 D3js + Extjs 面板

javascript - D3 V6 和 JavaScript - GeoJSON 填充为 "spilling"在路径之外

javascript - D3 秤弄乱了我的条形图

javascript - D3 : What does the scale do when passed an axis?

javascript - D3——嵌套饼图不显示所有楔形

javascript - 如何定位工具提示以跟随它在 D3 中附加的数据点?

d3.js - d3 和 Leaflet 之间的 GeoJSON 映射差异