当有独生子女时,d3不会绘制树?

时间:2013-07-14 21:29:27

标签: javascript d3.js

似乎(如果我犯了错误,请指出)如果你尝试用一条线绘制一棵树(即儿童没有分叉,每个孩子只有一个孩子。){{3} d3树布局似乎无法绘制它。

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

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

我意识到应该没有理由使用树形网格绘制单行,但这是动态生成的,因此我需要知道是否应该手动排除这些情况并向用户写入消息。

提前致谢。

1 个答案:

答案 0 :(得分: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;
    }
  });