我希望得到关于什么是一个好的数据模型的意见,以绘制像d3树图。树形图对我来说不起作用,因为我有一些场景,其中子节点可以与两个父节点链接,有时是来自不同层次结构的父节点。我打算修改d3树形图以使用不同的数据模型,这里我非常欣赏专家意见。以下是我认为数据模型可能的简单表示。一个是分层模型,另一个是平面模型。有人真的干涉过d3树数据模型吗?非常感谢任何帮助/意见!在此先感谢您的帮助!
var hierarchicalData = [
{
"id": "n1",
"children": [
{
"id": "n1-a",
"children":[
{
"id": "n1-a-1"
}
]
},
{
"id": "n1-b",
"children":[
{
"id": "n1-b-1"
}
]
}
]
},
{
"id": "n2",
"children": [
{
"id": "n2-a",
"children":[
{
"id": "n2-a-1"
}
]
}
]
}
];
以下是完全相同的分层模型的平面表示,但包含表示层次结构的“级别”。
{
"n1":{
"level": 0,
"children": ["n1-a", "n1-b"],
},
"n1-a":{
"level": 1,
"children":["n1-a-1"]
},
"n1-a-1":{
"level": 2,
"children":[]
},
"n1-b":{
"level": 1,
"children":["n1-b-1"]
},
"n1-b-1":{
"level": 2,
"children":[]
},
"n2":{
"level": 0,
"children": ["n2-a"]
},
"n2-a":{
"level": 1,
"children": ["n2-a-1"]
},
"n2-a-1":{
"level": 2,
"children":[]
}
}
答案 0 :(得分:0)
如果子节点可以有多个父节点,那么根据定义它不是树形图。 如果你想拥有一棵树,你可以采取几种UI方法,但这实际上取决于你想要实现的目标。
我使用d3树来展示公司的组织结构图。 有几家公司的员工有直接经理和副经理。 我们所做的只是向直接经理显示连接。 但是我们在员工节点上向鼠标悬停的其他经理提供了链接。 这是一个UI解决方案而不是数据模型解决方案,还有许多其他可能性。
另一种选择是做我的遗产对家谱的影响。它们显示每个节点的父节点,但只有其中一个节点连接到所呈现的树的其余部分。