根据行数据创建层次结构
Create hierarchy from row data
我正在尝试为d3.js的树布局创建层次结构,但我有行数据,这意味着只有链接和一些链接真正相互递归,就像在链接中的某些时候,两个不同的源有相同的目标,所以通过基本的d3.js树函数,它会遇到这种情况。
我还有其他选择吗?
例如,我有这样的数据
{ source: "main1", target: "level 3"}
{ source: "main2", target: "level 3"}
{ source: "level 3", target: "level 4"}
所以这将是像这个场景
0 0
' /
0
|
0
而且这些不在一个根下的父母也意味着树上有两个不同的父母!!!
任何有用的链接都将感谢
提前感谢
你说你有代表任意有向图(可能是非循环图?)的数据,你想从中创建一个层次结构。正如你所指出的,它并不代表层次结构。那么你期待什么呢?我认为你的"问题"的答案是:
"你不能这么做。你需要使用不需要层次结构的不同可视化。"
也许您想要像
这样的DAG可视化https://github.com/nickholub/d3-dag-visualization
如果您确信您想要一个层次结构,请提供一整套示例数据以及您期望的结果。我们无法从您提供的内容中猜测您想要什么。
是的,这不可能直接用d3.js实现,但有其他方法可以用d3.js 实现
1) 而不是使用
tree.links(nodes);
对于与每个节点连接的链接,我们可以使用
d3.layout.hierarchy()
并覆盖
.links(nodes)
方法并通过我们自己的方式管理链接连接意味着原始子节点将保留在您想要将其放在它的多个父节点下的位置,并通过提供一些唯一的id来标识节点并连接它们。注意:在这里,如果你使用的是从示例中复制过去的代码,你需要在
var link = svgGroup.selectAll("path.link")
.data(links, function(d) {
return d.target.id;
});
因为现在它不依赖于子链接和父链接,所有链接都是自己的,所以给它们id并使用该id作为过滤器,而不是使用目标id
2) 或者你可以自己创建自己的函数,创建一个数组或对象,它像链接一样保存对象,你只需要根据你的连接逻辑给它们源、目标和链接id。你可以随心所欲地玩它,因为它是你自己的,你可以添加额外的属性等。
- 从json对象聚集数据并创建层次结构
- Html5-使用SVG路径绘制的组织层次结构在左手边被剪裁
- 使用jquery为移动布局更改html层次结构
- 如何在javascript中使用2个一维数组创建层次结构树
- 从d3.js中的csv创建树层次结构
- D3:使用 nest 函数将带有父键的平面数据转换为层次结构
- 创建 jquery promise 层次结构的指南
- 谷歌浏览器扩展程序:如何使用层次结构分支创建右键单击扩展程序
- 如何从 d3 节点层次结构创建 ul-li 列表
- 通过 Excel 层次结构创建 JSON
- 从HTML大纲创建层次结构对象
- 用于创建层次结构的嵌套函数
- 根据行数据创建层次结构
- 创建JSON对象的层次结构数组
- 从伪层次结构创建嵌套对象
- 用Jquery创建无序列表的层次结构
- 解析 html 的结构/层次结构,并使用 javascript 以不同的形式重新创建它
- 将复杂的层次结构推送到可观察数组中会创建重复的实例
- 有没有一个工具可以创建我的 javascript 代码层次结构的可视化表示
- 如何用样板创建组件层次结构