参数化的D3js强制有向图节点定位

罗曼

我计划为动态创建的数据集的节点创建树状结构,并希望为力导向图设置所有节点的y轴坐标。换句话说,我希望节点位于层次结构(如树结构)中,而节点则可以在x轴上自由移动和优化自身。

最终结果应该是一棵树,其中的节点位于分配的级别,而不是像默认情况下那样呈放射状。同级链接不应重叠,并且应尽可能短(逻辑分组,因此希望通过力图进行此操作)。
如果有人有比这更简单的解决方案,那么我无所不能。

代码提取:

ldLinks = [
{source: "root", target: "1", source_level: 0, target_level: 1},
{source: "root", target: "2", source_level: 0, target_level: 1},
{source: "root", target: "3", source_level: 0, target_level: 1},
{source: "root", target: "4", source_level: 0, target_level: 1},
{source: "1", target: "1.1", source_level: 1, target_level: 2},
{source: "1", target: "1.2", source_level: 1, target_level: 2},
{source: "2", target: "2.1", source_level: 1, target_level: 3},
{source: "2", target: "2.2", source_level: 1, target_level: 3},
{source: "3", target: "3.1", source_level: 1, target_level: 3},
{source: "4", target: "3.2", source_level: 1, target_level: 3},
{source: "4", target: "3.3", source_level: 1, target_level: 3},
{source: "3", target: "3.2", source_level: 2, target_level: 3},
{source: "3", target: "4.1", source_level: 2, target_level: 3},
{source: "2.1", target: "5.1", source_level: 3, target_level: 4},
{source: "3.1", target: "5.1", source_level: 3, target_level: 4},
{source: "1", target: "5", source_level: 1, target_level: 4},
];

var dNodes = {};

// Compute the distinct dNodes from the ldLinks.
ldLinks.forEach(function(link) {
    link.source = dNodes[link.source] || (dNodes[link.source] = {name: link.source, level: link.source_level});
    link.target = dNodes[link.target] || (dNodes[link.target] = {name: link.target,  level: link.target_level});
});

//parameterize nodes
for (var sNodeName in dNodes) {
    //dNodes[sNodeName].fixed = (only fixed along y-axis)
    dNodes[sNodeName].y = (dNodes[sNodeName].level * 50)
}
罗曼

晕!

谢谢Limin对这个答案的评论

我设置force.gravity(0),然后函数中添加了边界(.attr("cx/cy")nodetick()

function tick() {
    link
        .attr("x1", function(d) { return d.source.x; })
        .attr("y1", function(d) { return d.source.y; })
        .attr("x2", function(d) { return d.target.x; })
        .attr("y2", function(d) { return d.target.y; });

    node
        .attr("transform", function(d) { return "translate(" + d.x + "," + d.y + ")"; })
        .attr("cx", function(d) { return d.x = Math.max(8, Math.min(width - 8, d.x)); })
        .attr("cy", function(d) { return d.y = Math.max(100*d.level, Math.min(100*d.level, d.y)); });
}

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

d3 强制有向图节点在过滤后停留在固定位置

来自分类Dev

将节点动态添加到d3.js强制有向图

来自分类Dev

将节点动态添加到d3.js强制有向图

来自分类Dev

d3.js 强制有向图:如何使节点大小取决于链接的值?

来自分类Dev

如何更改d3JS强制有向图中所有突出显示的节点的颜色?

来自分类Dev

如何在D3js强制有向图中为节点实现突出显示和过渡效果?

来自分类Dev

d3js强制大量节点

来自分类Dev

如何仅将新节点添加到d3强制有向图?

来自分类Dev

D3v4强制有向图-localStorage断开链接和节点的连接

来自分类Dev

类图-最佳节点定位

来自分类Dev

d3js(v4)画布强制布局,节点上带有文本

来自分类Dev

D3js在enter()上强制重复节点

来自分类Dev

d3js使用固定节点创建强制布局

来自分类Dev

D3js在enter()上强制重复节点

来自分类Dev

D3js强制布局更新节点和链接

来自分类Dev

强制有向图节点粘在中心

来自分类Dev

Javascript / D3.js /带标签的强制有向图

来自分类Dev

D3.js强制有向图,每组颜色不同吗?

来自分类Dev

d3强制有向图删除文本光标

来自分类Dev

d3强制有向图不选择文本

来自分类Dev

D3强制有向图ajax更新

来自分类Dev

动态过滤D3有向图的节点

来自分类Dev

带有D3js树形图的ReactJS

来自分类Dev

向动态添加的边缘d3js强制布局添加标签

来自分类Dev

向动态添加的边缘d3js强制布局添加标签

来自分类Dev

在d3js强制布局中更新某些节点的样式

来自分类Dev

破碎的 D3js 和弦图

来自分类Dev

使用向量和距离从现有 3d 点定位 3d 点

来自分类Dev

d3js强制定向-在悬停到节点上时,高亮显示/着色链接的节点和链接?

Related 相关文章

热门标签

归档