缺少数据意味着不显示可视化

Missing data means visualization not showing

本文关键字:显示 可视化 意味着 数据      更新时间:2023-09-26

我的数据集中有一堆节点和链接。

所有的链接都有一个source和target属性。

然而,并不是所有的源节点和目标节点都在我的节点数据集中。

示例:

nodes : {   
    'id' : 'A'
    },
    {   
    'id' : 'B'
    },
    {   
    'id' : 'C'
    };
links : {   
    'source' : 'A',
    'target' : 'B'
    },
    {   
    'source' : 'B',
    'target' : 'C'
    },
    {   
    'source' : 'C',
    'target' : 'D'
    }

注意最后一个链接链接了节点'C'和'D',但我没有ID为'D'的节点。

所以我得到以下错误:

Cannot read property 'weight' of undefined

如果无法找到源/目标节点并继续显示力布局可视化,我如何去不抛出错误?

我自己解决了。基本上,因为链接指向的节点甚至不在数据集中,所以我只能使用数据中同时包含源和目标的链接。

方法如下:

var edges = [];
links.forEach(function(e,i) { 
console.log(links.length)
    var sourceNode = nodes.filter(function(n) { return n.id === e.source; })[0],
    targetNode = nodes.filter(function(n) { return n.id === e.target; })[0];
if(sourceNode && targetNode){ //this is to make sure both the source and target node are not undefined
    edges.push({source: sourceNode, target: targetNode, origin : e.origin});
}
});

基本上,我必须创建另一个数组来使用(边),并使用具有源节点和目标节点的链接填充该数组。

检查:if(sourceNode && targetNode)检查此。如果它们有,那么它们被添加到边缘数组中,然后我使用强制布局:)