我正在尝试构建一个基于父子关系划分数据的 D3 可视化。
http://blog.luzid.com/2013/extending-the-d3-zoomable-sunburst-with-labels/
这些示例中使用的 JSON 遵循与此类似的模式:
var flare = {
"name": "family",
"size": 2000,
"children": [{
"name": "kidWithoutKids",
"size": 100
}, {
"name": "kidWithKids",
"size": 1900,
"children": [{
"name": "grandkidWithoutKids",
"size": 100
}, {
"name": "grandkidWithKids",
"size": 1900,
"children": [...and so on...]
}]
}]
}
我需要做的是获取一组表格数据并将其转换为该格式的 JSON 对象。因此,我输入的数据(我无法更改)如下所示:
var arrayChildParent = [
[{"thisText":"family"},{"thisText":"-"},{"thisNum":2000}],
[{"thisText":"kidWithoutKids"},{"thisText":"family"},{"thisNum":100}],
[{"thisText":"kidWithKids"},{"thisText":"family"},{"thisNum":1900}],
[{"thisText":"grandkidWithoutKids"},{"thisText":"kidWithKids"},{"thisNum":100}],
[{"thisText":"grandkidWithKids"},{"thisText":"kidWithKids"},{"thisNum":1800}],
..... and so on
]
所以,你可以把它想象成一张有 Child | 的桌子。家长 | 尺寸。显然,拥有一个像这样工作的函数会很棒:
var flare = createJSON(arrayChildParent);
数据可以按任何顺序出现,所以我一直很难构建一个循环遍历数据并创建 JSON 树的递归函数,但有时我可能有一个孩子,其父级的父级尚未创建. 我还尝试先循环创建父母或父母与父母的索引,但管理起来非常困难。
现在,我想知道我是不是走错了路。有没有更简单的方法可以简单地将我拥有的阵列数据集加载到 D3 中以用于树结构?
任何帮助将不胜感激。谢谢!