Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/447.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.js的csv到json_Javascript_D3.js_Tree - Fatal编程技术网

Javascript 层次结构树d3.js的csv到json

Javascript 层次结构树d3.js的csv到json,javascript,d3.js,tree,Javascript,D3.js,Tree,有人能帮我弄清楚为什么我的json文件没有被生成吗。我使用了数据的一小部分,它起了作用。当我使用完整的集合时,我得到的要么是空数组,要么是前两行有效,要么是循环错误 以下是我的csv的前几行 parent,name,nsize,lsize,type,level,nfill NR2F2,NNMT,20,3.035224474,black,red,blue NR2F2,CDH6,20,2.497522953,black,red,blue NR2F2,LOX,20,2.882828876,black,

有人能帮我弄清楚为什么我的json文件没有被生成吗。我使用了数据的一小部分,它起了作用。当我使用完整的集合时,我得到的要么是空数组,要么是前两行有效,要么是循环错误

以下是我的csv的前几行

parent,name,nsize,lsize,type,level,nfill
NR2F2,NNMT,20,3.035224474,black,red,blue
NR2F2,CDH6,20,2.497522953,black,red,blue
NR2F2,LOX,20,2.882828876,black,red,blue
NR2F2,AFAP1L2,20,3.250988851,black,red,blue
NR2F2,KCNG1,20,1.871023523,black,red,blue
NR2F2,THBS2,20,3.556420832,black,red,blue
NR2F2,RHOU,20,4.892457573,black,red,blue
NR2F2,ITIH5,20,1.579040121,black,red,blue
这是我从中复制的脚本

在//create the tree array部分之后,它似乎出错了


感谢您的帮助。谢谢

可能您的数据是周期性的?它是一个交互列表(与源(名称)的父交互)。有些交互具有反馈循环。因此,如果1-->2、2-->3和3-->1。这会是问题吗?有没有办法更改此脚本以正确排列这些反馈循环的json?如何在层次结构树中表示循环?不能。这是我从“周期性错误”中猜出来的。发现了一个无休止的循环1>2>3>1>2> 3…我猜这就是问题所在。您可以对数据进行更多的测试以确认。我希望它会变成1-->2、2-->3和1-->3。我不知道如何更改它,以便目标更高的父级可以从3-->1更改为1-->3确定,所以这是现阶段的一个假设。我添加了JavaScript标记,以防有人可以更改它n帮助您。我想您需要在代码中认识到这一点(但这很难,因为信息跨越多个节点)可能您的数据是周期性的?它是一个交互列表(与源(名称)的父交互)。有些交互具有反馈循环。因此,如果1-->2、2-->3和3-->1。这会是问题吗?有没有办法更改此脚本以正确排列这些反馈循环的json?如何在层次结构树中表示循环?不能。这是我从“周期性错误”中猜出来的。发现了一个无休止的循环1>2>3>1>2> 3…我猜这就是问题所在。您可以对数据进行更多的测试以确认。我希望它会变成1-->2、2-->3和1-->3。我不知道如何更改它,以便目标更高的父级可以从3-->1更改为1-->3确定,所以这是现阶段的一个假设。我添加了JavaScript标记,以防有人可以更改它n帮助您。我想您需要在代码中识别这一点(但这很困难,因为信息跨越多个节点)
//load csv and copy to global variable  
d3.csv("../jsfiles/nr2f2tbx5hey2json.csv", function(csv_data) { 
        var nested_data =  d3.nest()
          .entries(csv_data);

var dataMap = {};
var dataMap = nested_data.reduce(function(map, node) {
map[node.name] = node;
return map;
}, {});

// create the tree array
var tree = [];
nested_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
    tree.push(node);
}

});

 //create the root node for the treemap
var root = {};

    // Add the data to the tree
root.name = "Start";
root.children = tree;
console.log(JSON.stringify(root,null, 4));