我在 swt 浏览器环境中使用 d3.js。由于 d3.js 不是我绘制树形图的首选,因此我的数据是扁平的,如下所示:
var datatable = [
{name:'Global', parent: 'null', value: 0, color: 0},
{name:'America', parent:'Global', value: 0, color: 0},
{name:'Europe', parent:'Global', value: 0, color: 0},
{name:'Asia', parent:'Global', value: 0, color: 0},
{name:'Australia', parent:'Global', value: 0, color: 0},
{name:'France', parent:'Europe', value: 11, color: }
];
有些人会认识到这是在谷歌图表中用于“填充”图表的修改数据表。在 d3 中,我需要将层次结构传递给我的树形图函数,这将我引向 d3.nest 函数:
var root = d3.nest()
.key(function(d) { return d.name; })
.entries(datatable);
这是朝着正确方向迈出的一大步,并给了我这样的信息:
[
{
"key": "Global",
"values": [
{
"color": "0",
"name": "America",
"parent": "Global",
"value": "0",
},
{
"color": "0",
"name": "Europe",
"parent": "Global",
"value": "0",
},
]
},
{
"key": "Europe",
"values": [
{
"color": "0",
"name": "France",
"parent": "Europe",
"value": "11",
},
{
"color": "0",
"name": "Germany",
"parent": "Europe",
"value": "15",
},
]
}
]
但我想要的是这样的,将它传递给树图布局:
[
{
"key": "Global",
"values": [
{
"key": "Europe",
"values": [
{
"color": "0",
"name": "France",
"parent": "Europe",
"value": "11",
},
]
}
]
}
]
那么知道如何解决这个问题吗?我还没有找到一种方法来调用nest().key 函数以使结果令人满意。我也在寻找一种方法来为两个以上的层更动态地创建层次结构。任何想法?
我将非常感谢任何提示,并提前感谢您。