繁体   English   中英

使用D3.js的分层力图

[英]Hierarchical force diagram using D3.js

我想使用D3.js生成一个分层力图 - 一个力导向图,它允许您通过单击将图形扩展到子级别(显示子级之间的关系)的节点来导航树状结构。 节点可以通过两种方式相互关联,父节点或兄弟节点。 父关系表示节点“属于”其父节点。

作为一个起点,我看了强制集群示例: https//github.com/mbostock/d3/blob/master/examples/force/force-cluster.html ,并包含上述关系,但我无法想象如何只渲染扩展的集群而不是整个网络(见下图)。

JSON data:
{"nodes":
        [
        {"name":"Person 0","group":"Person 0"},
        {"name":"Person 1","group":"Person 1"},
        {"name":"Person 2","group":"Person 1"},
        {"name":"Person 3","group":"Person 1"},     
        {"name":"Person 4","group":"Person 3"},
        {"name":"Person 5","group":"Person 3"}  
        ],
"links":
        [
        {"source":1,"target":0,"type":"sibling"},
        {"source":2,"target":1,"type":"parent"},
        {"source":3,"target":1,"type":"parent"},
        {"source":3,"target":2,"type":"sibling"},
        {"source":4,"target":3,"type":"parent"},
        {"source":5,"target":3,"type":"parent"},
        {"source":4,"target":5,"type":"sibling"}
        ]
}

扩展集群

上图:强制图,红色链接表示兄弟关系。

也可以将“children”作为子句安排在JSON中,而不是使用父“type”:

{
"nodes": [
    {
        "name": "Person 0",
    },
    {
        "name": "Person 1",
        "children": [
            {
                "name": "Person 2",
            },
            {
.
.
.
"links": [
    {
        "source": 1,
        "target": 0
    },
.
.

但是,如何在跟踪子节点之间的关系的同时组合树结构?

一个富有想象力的树状结构看起来像: 树

下部指示视觉的期望布局(与上部图像中的功能类似)。

你对如何进行有任何建议吗?

隐含地,具有相同直接父节点的所有节点都是兄弟节点。 因此,您无需另外跟踪节点是否是彼此的兄弟节点。

如果您碰巧只有与其他兄弟节点相关但没有父节点的节点(例如示例中Person 0和Person 1之间的关系),则树布局不是正确的选择。 相反,您可能想尝试强制布局。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM