从json数据生成节点以用于强制布局

时间:2012-07-22 07:14:12

标签: json d3.js force-layout

我正在尝试制作类似于Mike Bostock's的气泡图:

enter image description here

但是,我不想随机生成节点,而是希望为json生成它们。假设我有一个有效JSON的dataset变量,如何从中生成一个nodes变量,可以用于强制布局。

迈克的实施(对于随机生成的圈子)是:

var nodes = d3.range(n).map(function() {
  var i = Math.floor(Math.random() * m),
      v = (i + 1) / m * -Math.log(Math.random());
  return {
    radius: radius(v),
    color: color(i),
    cx: x(i),
    cy: height / 2
  };
});

假设我的dataset JSON类似于:

{"nodes":[{"name": "node_name", "size": 18}, ... ]} 

我希望每个圆的半径为JSON数组中每个对象的size

1 个答案:

答案 0 :(得分:0)

nodes是一个对象数组,每个对象都有radiuscolorcxcy属性。您需要做的就是从数据中创建这样一个数组。具体如何取决于您的数据。请注意,您不需要创建所有属性 - 例如,如果所有节点都具有相同的颜色,则不需要添加相应的属性(但还需要更改实际设置颜色的代码)上)。