1

看起来(如果我犯了错误,请指出)如果你尝试用一条线绘制一棵树(即在孩子中没有分叉,每个孩子只有一个孩子。)像这样的 d3 树布局似乎无法绘制它。

另一方面,确保至少像这里这样的分裂它绘制得很好(我还做了一个测试,在同一棵树中同时拥有一个单叶节点和双叶节点,这可以正常工作)。

我的问题是仔细检查这是否是 d3 中的错误或我正在做的事情。如果您单击我给出的示例,您会看到 index.html 是相同的(并且完全取自 mike bostacks 示例here),唯一的区别在于单个额外的 json 行。

我意识到不应该使用树形网格来绘制单线,但这是动态生成的,所以我需要知道是否应该手动排除这些情况并向用户写一条消息。

提前致谢。

4

1 回答 1

1

d3 树本身并不关心嵌套级别和子级(或没有子级)。我已经在通用树示例中尝试了您的数据,并且效果很好。

问题是.separation原始示例中的自定义函数不能很好地处理它。如果您查看 Web 控制台,您会看到如下错误:Unexpected value rotate(NaN)translate(120) parsing transform attribute.

尝试更改此行:

.separation(function(a, b) { return (a.parent == b.parent ? 1 : 2) / a.depth; });

到这样的事情(还没有仔细评估原来的实际尝试做的事情):

  .separation(function(a, b) { 
    if (a.depth == 0) {
      return 1;
    } else {
      return (a.parent == b.parent ? 1 : 2) / a.depth;
    }
  });
于 2013-07-15T18:04:14.650 回答