如何将JSON文件与集群强制一起使用

如何将JSON文件与集群强制一起使用,json,d3.js,Json,D3.js,我希望使用Mike在这里描述的集群部队布局: 这个例子对我来说很好,但是,问题是当我将数据源更改为使用不同集群名称的JSON文件时,事情就停止了。没有错误,但不显示 目标是将每个分区中的名称分组为一个集群 JSON文件在html中。。。不确定是否可以上载JSFIDLE的数据 非常感谢您的指导 小提琴: 这是我尝试重新创建节点的地方。节点出现在console.log中,但从未出现在屏幕上 var nodes = d3.json("/r.json", function(error, data) {

我希望使用Mike在这里描述的集群部队布局:

这个例子对我来说很好,但是,问题是当我将数据源更改为使用不同集群名称的JSON文件时,事情就停止了。没有错误,但不显示

目标是将每个分区中的名称分组为一个集群

JSON文件在html中。。。不确定是否可以上载JSFIDLE的数据

非常感谢您的指导

小提琴:

这是我尝试重新创建节点的地方。节点出现在console.log中,但从未出现在屏幕上

var nodes = d3.json("/r.json", function(error, data) {

for (var i = 0; i < data.length; i++) {
    var obj = data[i];
    for (var key in obj){
        var rating = obj['rating']; // rating
        var r = rating * 20;        // radius
        var n = obj['name'];        // name
        var div = obj['division'];  // division
        // d = {cluster: div, radius: r, name: n, division: div, rating: rating};
        d = {cluster: div, radius: r};
        // console.log(key+"="+obj[key]);
    } 
    if (!clusters[i] || (r > clusters[i].radius)) clusters[i] = d;
    // console.log(d);
}
return d;
});
var nodes=d3.json(“/r.json”),函数(错误,数据){
对于(变量i=0;iclusters[i].radius))clusters[i]=d;
//控制台日志(d);
}
返回d;
});
谢谢 Kevin

首先,如果您想使用额外的数据文件,可以使用添加json文件。
其次,我使用json文件将您的代码从fiddle复制到plunkr,
console.log(nodes)
没有打印出数据,这是因为在这里检索数据的代码:

var nodes = d3.json("/r.json", function(error, data) {...})
与示例中的不完全相同,因为这是异步请求,所以这行代码不起作用:

var force = d3.layout.force()
.nodes(nodes) // data for nodes is not retrieved yet
第三,在我将d3代码放入请求回调后,svg中存在圆圈,但不可见,我认为这是因为svg大小设置(宽度、高度)不太适合圆圈的
cx
cy
,所以我将svg更改为较小的大小,并且它可见。这取决于最终要实现的目标,但调整圆的位置参数可能会有所帮助


正在工作。希望这能有所帮助。

首先,d3.json中的第二个参数是回调,而不是访问器。其次,d3.json返回一个d3.xhr对象,而不是数据。第三,这是一个异步请求,因此回调必须使用数据。感谢您的时间和知识。一个副作用似乎是集群在被破坏时不会再次聚集在一起。@KevinWaterson被破坏是否意味着您将这些圆拖走?是的,当拖动一个圆时,它不会重新聚集,同一组中的其他圆在拖动时也不会跟随一个圆,如演示中所示。