d3 v4:树形图给出了x和y的NaN

时间:2017-04-06 18:24:47

标签: javascript json d3.js

我有一些树形数据,我使用d3.stratify分层,这给了我一个正确的数据结构(它有子,数据和父项)。但是,当我通过d3.tree()时,x和y值都是NaN,这使得绘制它们变得不可能。基于我见过的示例,我不需要运行d3.hierarchy(),因为stratify为我做了这一点,而且我尝试使用hierarchy()但没有成功。

我尝试将JSON.stringify(data)粘贴到此处,但是它给了我一个关于将循环结构转换为JSON的错误,这是不可能的,所以这也不起作用。我所知道的是每一层(除了顶层)都有​​一个children数组,一个data对象和一个parent对象,所以这一切似乎都是正确的。

编辑:我尝试了一些测试数据(from this link),我仍然得到x和y的NaNs。我复制了treeData,将其通过d3.hierarchy然后通过此tree()调用,x和y仍为NaN。

var treeMap = d3.tree()
                .size(width, height2); // 1020, 170 in my case.

var treeData =
  {
    "name": "Top Level",
    "children": [
      { 
        "name": "Level 2: A",
        "children": [
          { "name": "Son of A" },
          { "name": "Daughter of A" }
        ]
      },
      { "name": "Level 2: B" }
    ]
  };

treeData = d3.hierarchy(treeData, function(d) { return d.children; });
var nodes = treeMap(treeData); // gives NaN x and y values.

1 个答案:

答案 0 :(得分:1)

啊,这么简单却如此愚蠢。我没有传递([height, width])而是将(height, width)传递给树函数,所以当然它失败了。给它正确的数组可以解决所有问题。