javascript - 使用任意 x 和 y 名称初始化 d3 四叉树

标签 javascript d3.js quadtree

我想使用没有标记为 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]; });

数据绑定(bind)必须稍后附加

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

关于javascript - 使用任意 x 和 y 名称初始化 d3 四叉树,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35359453/

相关文章:

algorithm - 从莫顿有序点构建四叉树

time-complexity - 四叉树范围搜索的复杂性

javascript - 通过 Rails 上的 ajax 请求获取项目

javascript - 如何彻底处置EaselJS Canvas ?

javascript - 如何更改c3js中的工具提示内容

javascript - 节点上的 D3 元数据

javascript - 充满事件处理程序的巨大文件!如何在 AJAX Web 应用程序中组织大型 jQuery 文件?

javascript - 用于获取 ngTableParams 的通用排序功能不适用于非分组表

javascript - 使用外部 json 文件使用 d3js 创建气泡图

algorithm - 查找四叉树中最近的相邻边