Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/429.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 从D3气泡图的json文件获取数据_Javascript_D3.js - Fatal编程技术网

Javascript 从D3气泡图的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

我试图根据D3Wiki中的示例创建一个气泡图

不幸的是,我仍然是javascript的初学者,不理解一些代码

json的布局如下所示:

我想创建圆,并以值命名,并根据计数确定其大小

我需要修改的代码如下:

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文件起了同样的名字,所以我不需要在那里更改名称。马克-我明白你的意思。我想我需要递归才能进入多个级别。