Javascript 最新群集部队布局示例的问题
根据这项工作: 如果我用自动生成的数据的JSON.stringify()输出代替自动创建节点,如下所示Javascript 最新群集部队布局示例的问题,javascript,d3.js,force-layout,Javascript,D3.js,Force Layout,根据这项工作: 如果我用自动生成的数据的JSON.stringify()输出代替自动创建节点,如下所示 var nodes = [ {"cluster":2,"radius":1.6180680659922448}, {"cluster":0,"radius":3.3575295077569}, {"cluster":1,"radius":0.9569281165554346}, {"cluster":3,"radius":10.7245554165012} ];
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字符串化没有捕捉到的东西?也许我只是忽略了一些简单的事情…谢谢你的帮助。谢谢这里有一把小提琴可以帮忙:
我注释掉了不起作用的代码。另外,另一个细节是,它看起来不像我离开时的原始代码(除了我减少了集群和节点的数量)实际上处理了正确数量的不同集群。它应该绘制4个不同的节点,但只绘制3种颜色。问题是,
节点
不是唯一需要初始化的数据结构--集群
也需要初始化。特别是,特定节点被分配给特定的集群索引。如果你不这样做,事情就会破裂
要修复,请执行以下操作
nodes.forEach(function(d) { clusters[d.cluster] = d; });
完成JSFIDLE。哦,是的,我非常想念分配给集群阵列的任务。非常感谢你!