最新集群强制布局示例的问题

时间:2013-12-10 17:21:08

标签: javascript d3.js force-layout

基于这项工作: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,

这是集群(alpha)功能。所以,显然自动生成数据的d3.map函数是在JSON字符串化没有捕获的结构中添加了什么?也许我只是忽略了一些简单的事情......感谢帮助。谢谢!这是帮忙的小提琴:http://jsfiddle.net/Nivaldo/FJ3qq/1/

我注释掉了无效的代码。此外,另一个细节,它似乎不像原来的代码,因为我离开它(除了我减少了群集和节点的数量)实际上是处理正确数量的不同群集。它应该绘制4种不同的颜色,但只能用3种颜色绘制。

1 个答案:

答案 0 :(得分:1)

问题是nodes不是唯一需要初始化的数据结构 - clusters也需要。特别是,特定节点被分配给特定的集群索引。如果你不这样做,事情就会破裂。

要修复,请执行类似

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

完成jsfiddle here