我正在尝试为sunburst图制作嵌套的JSON,但是我遇到了一些麻烦。正如你在下面的小提琴中看到的那样,共享父母名字的孩子并没有被应用到一切?我希望No Virtual与Virtual Parent具有相同的属性。但是因为它们是同一个名字我遇到了问题?
有没有办法检查树的根是否相同?这种方式每次都可能不同,但是它会越来越嵌套,这些名称的选择也是一样的。
http://jsfiddle.net/cre96uf3/2/
// create a name: node map
var dataMap = data.reduce(function(map, node) {
map[node.name] = node;
return map;
}, {});
// create the tree array
var tree = [];
data.forEach(function(node) {
// add to parent
var parent = dataMap[node.parent];
if (parent) {
// create child array if it doesn't exist
(parent.children || (parent.children = []))
// add node to child array
.push(node);
} else {
// parent is null or missing
tree.push(node);
}
});
// show what we've got
d3.select('body').append('pre')
.text(JSON.stringify(tree, null, ' '));
答案 0 :(得分:0)
有d3.nest使你的生活比这更容易。
这是一个非常有用的工具,可以用来嵌套: http://bl.ocks.org/shancarter/raw/4748131/
否则请在此处阅读: http://www.d3noob.org/2014/02/grouping-and-summing-data-using-d3nest.html
祝你好运,金