Javascript 如何定义D3中的父子关系?

Javascript 如何定义D3中的父子关系?,javascript,json,d3.js,Javascript,Json,D3.js,在下面的json文件中,id是id号,lv是级别,pid是该记录的父id号。如何在D3.js中构建父子节点关系以绘制分区 我已经通过d3.json和data.map函数将json文件转换为数组 [ { "id": 1, "nam": "Ph", "lv": 1, "pid": 0 }, { "id":2, "nam":"Pa", "lv1":2, "pid":1

在下面的json文件中,
id
是id号,
lv
是级别,
pid
是该记录的父id号。如何在D3.js中构建父子节点关系以绘制分区

我已经通过d3.json和data.map函数将json文件转换为数组

 [
    {
       "id": 1,
      "nam": "Ph",
      "lv": 1,
      "pid": 0
    },
    {
      "id":2,
      "nam":"Pa",
      "lv1":2,
      "pid":1 
    },
    ...
 ]

要定义父子关系,您需要

因此,考虑到您的数据结构,分层功能应该是这样的:

var stratify = d3.stratify()
    .id(function(d) { return d.id; })
    .parentId(function(d) { return d.pid; });
该函数非常容易使用:在
id
中设置每个节点的id,在
parentId
中设置每个节点的父id(在本例中,分别是
id
pid

查看此演示:

var data=[{“id”:1,“nam”:“Ph”,“lv”:1,“pid”:“},
{“id”:2,“nam”:“Pa”,“lv1”:2,“pid”:1},
{“id”:3,“nam”:“Foo”,“lv1”:2,“pid”:1},
{“id”:4,“nam”:“Bar”,“lv1”:3,“pid”:2}];
var stratify=d3.stratify()
.id(函数(d){返回d.id;})
.parentId(函数(d){return d.pid;});
变量根=分层(数据);
console.log(root)

要定义父子关系,您需要

因此,考虑到您的数据结构,分层功能应该是这样的:

var stratify = d3.stratify()
    .id(function(d) { return d.id; })
    .parentId(function(d) { return d.pid; });
该函数非常容易使用:在
id
中设置每个节点的id,在
parentId
中设置每个节点的父id(在本例中,分别是
id
pid

查看此演示:

var data=[{“id”:1,“nam”:“Ph”,“lv”:1,“pid”:“},
{“id”:2,“nam”:“Pa”,“lv1”:2,“pid”:1},
{“id”:3,“nam”:“Foo”,“lv1”:2,“pid”:1},
{“id”:4,“nam”:“Bar”,“lv1”:3,“pid”:2}];
var stratify=d3.stratify()
.id(函数(d){返回d.id;})
.parentId(函数(d){return d.pid;});
变量根=分层(数据);
console.log(root)