我目前正在使用D3.js中的力导向图进行数据可视化。我有一个用例,其中我必须根据分数的阈值来过滤节点和链接(通过过滤,我不应该在数据可视化中显示。)
以下是一段数据json
"links": [
{
"source": 17,
"target": 9,
"score": 0.428
},
{
"source": 3,
"target": 9,
"score": 0.198
},
{
"source": 17,
"target": 13,
"score": 0.336
},
{
"source": 11,
"target": 13,
"score": 0.178
},
{
"source": 17,
"target": 13,
"score": 0.336
}]
"nodes": [
{
"size": 8,
"score": 0.5,
"id": "Node1",
"name": "Node1",
"type": "triangle-up"
},
{
"size": 10,
"score": 0.1,
"id": "Node2",
"name": "Node2",
"type": "circle"
},
{
"size": 10,
"score": 0.1,
"id": "Node3",
"name": "Node3",
"type": "circle"
},
{
"size": 10,
"score": 0.1,
"id": "Node4",
"name": "Node4",
"type": "circle"
},
{
"size": 10,
"score": 0.1,
"id": "Node5",
"name": "Node5",
"type": "circle"
}]
所以我所做的是基于链接中的score参数的,我已经从links数组中删除了一项。当我尝试从节点数组中删除该节点时,我的图形给出了多个错误。因此,我想知道有什么方法可以找到未与任何其他节点链接的节点,以便可以在数据可视化中删除或不显示它们。
答案 0 :(得分:1)
我以这种方式执行:
var links=data.links.filter(function(d) {
return d.score > 0.5;
});
var nodes=data.nodes.filter(function(d) {
if (d3.set(links.map(function(v) { return v.source_id })).values().includes(d.id) | d3.set(links.map(function(m){ return m.target_id })).values().includes(d.id)) {
return d.id
};
});
然后我有一个类似drawNetwork(links,nodes){...}
希望这会有所帮助!