作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我希望从文件中加载JSON数据数组,以根据Mike Bostock example here生成可折叠的树形图。该示例使用格式正确的外部JSON文件,并使用d3.json函数加载它。
我希望能够从文件中加载json数组,这是从flay数组(按example question here)生成多级数组的结果。
sample file I have stood up on bl.ocks.org / GitHub显示了我要实现的两个部分,而没有获取多级JSON数据并将其连接到可折叠树形图的关键部分
简而言之。我在文件中声明以下数据;
var data = [
{ "name" : "ABC", "parent":"DEF", "relation": "ghi", "depth": 1 },
{ "name" : "DEF", "parent":"null", "relation": "null", "depth": 0 },
{ "name" : "new_name", "parent":"ABC", "relation": "rel", "depth": 2 },
{ "name" : "new_name2", "parent":"ABC", "relation": "foo", "depth": 2 },
{ "name" : "Foo", "parent":"DEF", "relation": "rel", "depth": 2 }
];
var dataMap = data.reduce(function(map, node) {
map[node.name] = node;
return map;
}, {});
// create the tree array
var treeData = [];
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
treeData.push(node);
}
});
[
{
"name": "DEF",
"parent": "null",
"relation": "null",
"depth": 0,
"children": [
{
"name": "ABC",
"parent": "DEF",
"relation": "ghi",
"depth": 1,
"children": [
{
"name": "new_name",
"parent": "ABC",
"relation": "rel",
"depth": 2
},
{
"name": "new_name2",
"parent": "ABC",
"relation": "foo",
"depth": 2
}
]
},
{
"name": "Foo",
"parent": "DEF",
"relation": "rel",
"depth": 2
}
]
}
]
d3.json("example.json", function(error, DEF) {
root = DEF;
root.x0 = height / 2;
root.y0 = 0;
function collapse(d) {
if (d.children) {
d._children = d.children;
d._children.forEach(collapse);
d.children = null;
}
}
root.children.forEach(collapse);
update(root);
});
最佳答案
您非常接近,只需将创建的treeData设置为树的根即可。因此,您可以执行以下操作,而不是加载JSON数据:
// replace this line
// d3.json("/d/4063550/flare.json", function(error, flare) {
root = treeData[0];
root.x0 = height / 2;
root.y0 = 0;
function collapse(d) {
if (d.children) {
d._children = d.children;
d._children.forEach(collapse);
d.children = null;
}
}
root.children.forEach(collapse);
update(root);
//remove this line
// });
关于d3.js - 如何在d3.js中从内部JSON数组而不是从外部资源/文件中加载可折叠树的数据?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20940854/
我正在开发一个需要能够平均三个数字的 Facebook 应用程序。但是,它总是返回 0 作为答案。这是我的代码: $y = 100; $n = 250; $m = 300; $number = ($y
我只是无法弄清楚这一点,也找不到任何对我来说有意义的类似问题。我的问题:我从数据库中提取记录,并在我的网页上以每个面板 12 条的倍数显示它们。因此,我需要知道有多少个面板可以使用 JavaScrip
我是一名优秀的程序员,十分优秀!