【问题标题】:d3.js force layout graph : how to build the nodes object from scratch?d3.js 强制布局图:如何从头开始构建节点对象?
【发布时间】:2014-01-02 08:13:12
【问题描述】:

我正在尝试根据自己的需要调整以下 d3.js 强制布局:
http://bl.ocks.org/mbostock/1093130

当我使用以下 json 文件时,一切正常(2 个节点和 1 个链接):

    {
     "name": "parent",
     "children": [
          {"name": "child1", "size": 100}
     ]
    }

然后我想从头开始构建节点对象;因此,在上述参考示例中,我将flatten() 函数替换为以下函数:

    function flatten1() {
      var nodes = [];
      var node = {name: 'child1', size: 100, id: 1};
      nodes.push(node);
      node = {name: 'parent', children: [{name: 'child1', size: 100, id: 1}], id: 2};
      nodes.push(node);
      return nodes;
    }

update() 函数现在以 :

开头
var nodes = flatten1(),
links = d3.layout.tree().links(nodes);

当然,我不再使用json文件了。
当我检查节点和链接的内容时,它看起来与之前的工作代码(带有 json 文件)相似,但有一个显示问题:2 个节点都可以,但链接从父节点到左上角svg 块的一角...

我错过了什么? 任何帮助将不胜感激。

【问题讨论】:

    标签: javascript json hyperlink d3.js nodes


    【解决方案1】:

    我猜您作为子节点传递给第二个节点的节点需要是对第一个节点的引用,而不是您正在创建的新对象。试试这个;

    function flatten1() {
      var nodes = [];
      var node1 = {name: 'child1', size: 100, id: 1};
      nodes.push(node1);
      var node2 = {name: 'parent', children: [node1], id: 2};
      nodes.push(node2);
      return nodes;
    }
    

    如果可行,那么它可以让您了解如何塑造扁平化算法的其余部分。

    【讨论】:

      猜你喜欢
      • 2012-07-13
      • 2015-11-22
      • 2016-08-15
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-05-17
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多