2016-02-12 25 views
1

我想使用沒有標有x和y的列的數據來建立一個d3四叉樹,但是還有一些其他標籤。讀四叉樹的文檔,我想我能做到這一點是這樣的:用任意的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」,但也有原因,我不想這樣做。)

回答

0

不要創建四叉樹傳遞數據

例如:

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'); 
+0

謝謝您必須追加!這樣可行。 – smiley