[英]Fade links and nodes that are not immediately connected to the node hovered on in a d3 graph
[英]d3 remove nodes connected to clicked node
因此,我使用此示例D3強制布局-.exit()。remove()只是在滴答事件中給出錯誤,以創建我的強制控制布局。
現在,我的問題仍然是當您右鍵單擊“刪除節點”以更改功能時是否存在,因此您無需刪除實際的節點,但可以刪除連接到特定類型節點的節點。
例如,如下圖所示,如果我單擊AI想要刪除藍色和紅色的任何東西,但不要從c中刪除紅色或藍色,如果我單擊b則它不會刪除任何東西。
我嘗試了,但失敗了。
看來您想選擇性地崩潰。 那就是有些節點應該崩潰,而另一些節點則不應崩潰。 為此,您需要制作一個JSON,以指示該節點永遠不會折疊我的JSON中的摘錄紅色類型的可折疊
{
"name": "cluster",
"type": "red",
"children": [{
"name": "AgglomerativeCluster",
"type": "red",
"size": 3938
},
藍色的類型不可折疊,如下所示
, {
"name": "ShortestPaths",
"type": "blue",
"size": 5914
},
在點擊功能中,您將刪除所有其他節點,除了藍色類型的節點,如下所示
function click(d) {
if (d3.event.defaultPrevented) return; // ignore drag
if (!d.collapsed) {
d.collapsed = true;
d._children = d.children;
var openNodes = [];
//on collapse remove all nodes except the one with type blue.
d.children.forEach(function (d) {
if (d.type == "blue") openNodes.push(d);
});
d.children = openNodes;
} else {
d.collapsed = false;
d.children = d._children;
d._children = null;
}
update();
}
完整的工作代碼在這里
請注意,在單擊節點“集群”時,其所有子節點將折疊,但節點“ mergeEdge”除外,因為其類型為blue 。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.