D3树图修改数据模型

时间:2016-11-12 04:21:46

标签: d3.js

我希望得到关于什么是一个好的数据模型的意见,以绘制像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":[]
  } 
}

1 个答案:

答案 0 :(得分:0)

如果子节点可以有多个父节点,那么根据定义它不是树形图。 如果你想拥有一棵树,你可以采取几种UI方法,但这实际上取决于你想要实现的目标。

我使用d3树来展示公司的组织结构图。 有几家公司的员工有直接经理和副经理。 我们所做的只是向直接经理显示连接。 但是我们在员工节点上向鼠标悬停的其他经理提供了链接。 这是一个UI解决方案而不是数据模型解决方案,还有许多其他可能性。

另一种选择是做我的遗产对家谱的影响。它们显示每个节点的父节点,但只有其中一个节点连接到所呈现的树的其余部分。