基于这项工作: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种颜色绘制。
答案 0 :(得分:1)
问题是nodes
不是唯一需要初始化的数据结构 - clusters
也需要。特别是,特定节点被分配给特定的集群索引。如果你不这样做,事情就会破裂。
要修复,请执行类似
的操作nodes.forEach(function(d) { clusters[d.cluster] = d; });
完成jsfiddle here。