似乎(如果我犯了错误,请指出)如果你尝试用一条线绘制一棵树(即儿童没有分叉,每个孩子只有一个孩子。){{3} d3树布局似乎无法绘制它。
另一方面确保至少有一个像this这样的分割它很好(我还做了一个测试,在同一个树中同时拥有一个叶子节点和双叶子节点,这样可以正常工作)。
我的问题是仔细检查这是d3中的错误还是我正在做的事情。如果你点击我给出的例子,你可以看到index.html是相同的(并且完全取自mike bostacks示例here),唯一的区别在于单个额外的json线。
我意识到应该没有理由使用树形网格绘制单行,但这是动态生成的,因此我需要知道是否应该手动排除这些情况并向用户写入消息。
提前致谢。
答案 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;
}
});