D3树布局-强制子节点使用可用空间
d3 tree layout - force child nodes to use available space
我有一个基于树的布局使用d3,基于这里的可折叠树布局的例子。
正如你在演示中看到的,节点之间的垂直间距对于树中的每个关卡都是恒定的,这意味着节点可以聚集在一起,同时留下大量的空白。
相反,我希望每一层都占据所有可用的垂直空间。例如,具有2个子节点的关卡的节点间隔为0%和100%,而3个子节点的节点间隔为0%、50%和100%。
希望这是可能的!
您可以在https://github.com/mbostock/d3/issues/317上找到一些有用的信息,例如如何通过随着深度的增加减少兄弟姐妹的横向距离来获得D3.js's整洁的树状图(这个问题与那个问题有明显的重叠)。后者提供了一个nodeSize参数,我认为这个参数比任意地将节点推得越远越好,可以提供更好的视觉显示。
您可以修改'function update(source)',在此函数下添加以下代码:
// Recompute the new height
var levelWidth = [1];
var childCount = function(level, n) {
if(n.children && n.children.length > 0) {
if(levelWidth.length <= level + 1) levelWidth.push(0);
levelWidth[level+1] += n.children.length;
n.children.forEach(function(d) {
childCount(level + 1, d);
});
}
};
childCount(0, root);
var newHeight = d3.max(levelWidth) * 40;
tree = tree.size([newHeight, width]);
详细的问题和答案(Superboggly)参考如下:根据子节点的数量动态调整d3树布局的大小
相关文章:
- 选择<李>使用普通JavaScript的子节点,而不是孙节点
- js循环遍历单击的元素子节点
- 如何将数据添加到json的子节点
- 删除HTML节点而不删除其子节点
- 如何在javascript DOM api中获取具有给定条件的子节点
- 仅使用某些子节点访问xml中父节点的子节点
- 检测单击子节点并发送槽事件处理程序
- 从 d3.js 中的树中选择节点的子节点
- 访问所选剑道树视图节点的子节点
- 为什么正文标记后的脚本标记在子节点中计数
- 难以获取使用属性选择的节点的子节点
- 使用Javascript设置带有子节点的父节点的类's文本等于.
- 如何确定父节点是否有子节点
- 在没有 jquery 的情况下更改子节点(父节点具有 ID)中的链接文本
- Javascript - 子节点计数
- 使用MongoDB的URL参数's地理空间和节点
- 在子节点上重复
- 如何在D3.js基于力的标签布局图中获取公共子节点
- 如何访问React中的子节点
- D3树布局-强制子节点使用可用空间