2013-12-10 45 views
2

http://bl.ocks.org/mbostock/7882658問題最新的集羣力量佈局例如在此基礎上

如果我通過這樣的自動生成數據的JSON.stringify()輸出代替自動創建節點...

var nodes = [ 
    {"cluster":2,"radius":1.6180680659922448}, 
    {"cluster":0,"radius":3.3575295077569}, 
    {"cluster":1,"radius":0.9569281165554346}, 
    {"cluster":3,"radius":10.7245554165012} 
]; 

...我得到一個異常就行了「看不懂的未定義的屬性X」:

var x = d.x - cluster.x, 

這是集羣(阿爾法)函數中。所以,顯然自動生成數據的d3.map函數會在JSON字符串沒有捕獲的結構中放入某些東西?也許我只是俯視一些簡單的...幫助表示讚賞。謝謝!這裏是一個小提琴幫助:http://jsfiddle.net/Nivaldo/FJ3qq/1/

我註釋掉了不工作的代碼。此外,另一個細節,它似乎不像我離開它的原始代碼(除了我減少了羣集和節點的數量)實際上是處理正確數量的不同羣集。它應該畫4個不同的,但只有3種顏色的繪畫。

回答

1

問題是,nodes不是唯一需要初始化的數據結構 - clusters也需要。特別是,特定節點被分配給特定的集羣索引。如果你不這樣做,事情就會破裂。

要解決,這樣做

nodes.forEach(function(d) { clusters[d.cluster] = d; }); 

完整的jsfiddle here

+0

哦,是的,我非常想念集羣陣列的任務。非常感謝你! – FernOfTheAndes