D3将强制布局调整为具有附加父路径和同级路径的树结构
D3 adapt force layout for tree structure with additional parent and sibling paths
D3是否提供了创建树的可能性,在树中,同一级别的节点之间存在连接,但也存在不同级别上独立于该级别的路径(例如,级别2的节点3应该具有到级别4的节点6的可视链接)。
我指的是这样的人:
(1)
(2)_/ '_(3)
/_(4) '
/_(5)__(6)
我认为这是一个"正常"的图形结构,但我必须像树一样自上而下地将其可视化。大概http://bl.ocks.org/GerHobbelt/3683278这将是一个很好的起点,但我如何告诉部队布局,使节点像树一样更清晰?
编辑:我的数据如下:
{
"name": "Root",
"children": [
{
"name": "1",
"children": [
{
"name": "2",
"children": [
{"name": "20"},
{"name": "21"},
{"name": "22"}
]
},
{
"name": "3",
"children": [
{"name": "31",
"children": [
{"name": "300"},
{"name": "301"},
{"name": "302",
"children": [
{"name": "3020"},
{"name": "3021"},
{"name": "3022"}
]
}
]
},
{"name": "32"},
{"name": "33"},
{"name": "34"}
]
},
{
"name": "4",
"children": [
{"name": "41"},
{"name": "41"}
]
}
]
}
]
}
我复制了这样的树示例:http://bl.ocks.org/mbostock/4339083
我现在如何添加单独的链接?例如,在节点"2"answers"3"之间?我已添加
var dataset = {
edges: [
{source: 2, target: 3}
]
};
在复制的示例中,链接创建是通过完成的
// Update the links…
var link = vis.selectAll("path.link")
.data(tree.links(nodes), function(d) { return d.target.id; });
// Enter any new links at the parent's previous position.
link.enter().insert("svg:path", "g")
.attr("class", "link")
.attr("d", function(d) {
var o = {x: source.x0, y: source.y0};
return diagonal({source: o, target: o});
})
.transition()
.duration(duration)
.attr("d", diagonal);
// Transition links to their new position.
link.transition()
.duration(duration)
.attr("d", diagonal);
// Transition exiting nodes to the parent's new position.
link.exit().transition()
.duration(duration)
.attr("d", function(d) {
var o = {x: source.x, y: source.y};
return diagonal({source: o, target: o});
})
.remove();
我不明白,我如何才能添加我的新的,额外的链接。有什么想法吗?
您可以为此使用普通的树布局——它不限制节点之间的连接类型。基本想法是绘制所有"正常"树链接,然后分别添加级别之间的链接。对于其中的每一个,都需要确定起始节点和结束节点的位置,并在它们之间画一条线。
首先,您需要解析附加边的坐标。
dataset.edges.forEach(function(e) {
e.source = nodes[e.source];
e.target = nodes[e.target];
});
然后,像画其他链接一样画链接。
vis.selectAll("path.linkExtra").data(dataset.edges)
.enter().append("path")
.attr("class", "linkExtra")
.attr("d", diagonal");
相关文章:
- Javascript:使用绝对路径设置img src
- 如何在d3.js中返回路径的y坐标
- 更改JSON对象的结构
- 复制图像路径以单击它
- 从模块内部访问Express装载路径
- 角度控制器结构
- JS文件的路径正在消失
- 使用onclick绘制SVG路径
- jpm的默认Firefox路径没有'不起作用
- 如何使用jquery将base64图像路径转换为真实路径
- Html5-使用SVG路径绘制的组织层次结构在左手边被剪裁
- D3将强制布局调整为具有附加父路径和同级路径的树结构
- 全栈应用程序Gulp构建的输出/路径/结构策略
- 根据路径字符串构建嵌套文件夹结构
- Php Rest API的路径层次结构
- JSON路径:按层次结构输出值加上父级
- 变量URL结构需要JS基路径
- 基于菜单项的URL路径结构创建一个嵌套的UL菜单
- 如何跟踪树状数据结构的所有路径
- 如何用Grunt uglify缩小js文件并保存路径结构