Javascript 从D3气泡图的json文件获取数据
我试图根据D3Wiki中的示例创建一个气泡图 不幸的是,我仍然是javascript的初学者,不理解一些代码 json的布局如下所示: 我想创建圆,并以值命名,并根据计数确定其大小 我需要修改的代码如下:Javascript 从D3气泡图的json文件获取数据,javascript,d3.js,Javascript,D3.js,我试图根据D3Wiki中的示例创建一个气泡图 不幸的是,我仍然是javascript的初学者,不理解一些代码 json的布局如下所示: 我想创建圆,并以值命名,并根据计数确定其大小 我需要修改的代码如下: function recurse(name, node) { if (node.children) node.children.forEach(function(child) { recurse(node.name, child); }); else classes.push({pac
function recurse(name, node) {
if (node.children) node.children.forEach(function(child) { recurse(node.name, child); });
else classes.push({packageName: name, className: node.name, value: node.size});
}
因此,我用children的实例替换我想要在json中迭代的路径。然后我更改所需密钥的名称
facet_counts.facet_pivot["category_level0,category_level1,category_level2,category_level3"]
这段代码看起来像:
function recurse(name, node) {
if (node.facet_counts.facet_pivot["category_level0,category_level1,category_level2,category_level3"]) node.facet_counts.facet_pivot["category_level0,category_level1,category_level2,category_level3"].forEach(function(child) { recurse(node.value, child); });
else classes.push({packageName: value, className: node.value, value: node.count});
}
但这不起作用。我在页面上没有看到任何内容,控制台输出显示:
Uncaught TypeError: Cannot read property 'facet_pivot' of undefined
有人能帮我指出正确的方向吗
谢谢
添加JSFIDLE:所以我找到了答案。我没有看到我使用的json文件的格式与示例中提供的格式不同 在开发人员控制台中玩了一会儿之后,我发现我必须将processData函数编辑为以下内容:
function processData(data) {
var obj = data.facet_counts.facet_pivot["category_level0,category_level1,category_level2,category_level3"];
var newDataSet = [];
for(var prop in obj) {
newDataSet.push({name: obj[prop].value, className: obj[prop].value.toLowerCase(), size: obj[prop].count});
}
return {children: newDataSet};
}
您是否在此行中传递了正确的json文件?d3.json(“flare.json”,function(error,root)添加一个fiddle也会很有帮助…示例代码只使用
recurse
函数来展平flare.json
数据(这是一个嵌套结构)。您的结构看起来已经很平坦了,您只需使用json即可[“facet\u counts”][“facet\u pivot”][“category\u level0,category\u level1,category\u level2,category\u level3”]
我添加了一个提琴。@brettwgreen我给我的json文件起了同样的名字,所以我不需要在那里更改名称。马克-我明白你的意思。我想我需要递归才能进入多个级别。