使用任意 x 和 y 名称初始化 D3 四叉树

initialise d3 quadtree with arbitrary x and y names

本文关键字:初始化 D3 四叉树 任意      更新时间:2023-09-26

我想使用没有标记为 x 和 y 的列但带有其他一些标签的数据来设置一个 d3 四叉树。阅读四叉树文档,我认为我可以这样做:

var data = [{"a":6,"b":99.0},{"a":12,"b":227.0},{"a":2,"b":43.0},{"a":23,"b":32.0}];
var xname = "a";
var yname = "b";
var quadtree = d3.geom.quadtree(data)
.x(function(d) {return d[xname]; })
.y(function(d) {return d[yname]; });

但是当我运行此代码时,出现错误:

TypeError: d3.geom.quadtree(data).x is not a function. (In 'd3.geom.quadtree(data).x(function(d) {return d[xname]; })', 'd3.geom.quadtree(data).x' is undefined)

如何设置四叉树以使用不同的 x 和 y 标签?(显然我可以将数据更改为使用"x"和"y",但我不想这样做是有原因的。

不要创建传递数据的四叉树

例如:

var data = [{"a":6,"b":99.0},{"a":12,"b":227.0},{"a":2,"b":43.0},{"a":23,"b":32.0}];
var xname = "a";
var yname = "b";

var quadtree = d3.geom.quadtree(/* nothing here */)
     .x(function(d) {return d[xname]; })
     .y(function(d) {return d[yname]; });

稍后必须追加数据绑定

d3.selectAll('circle').data(quadtree(data))
   .append('circle');