簡體   English   中英

d3刪除連接到單擊節點的節點

[英]d3 remove nodes connected to clicked node

因此,我使用此示例D3強制布局-.exit()。remove()只是在滴答事件中給出錯誤,以創建我的強制控制布局。

現在,我的問題仍然是當您右鍵單擊“刪除節點”以更改功能時是否存在,因此您無需刪除實際的節點,但可以刪除連接到特定類型節點的節點。

例如,如下圖所示,如果我單擊AI想要刪除藍色和紅色的任何東西,但不要從c中刪除紅色或藍色,如果我單擊b則它不會刪除任何東西。

http://imgur.com/MhPL34P

我嘗試了,但失敗了。

看來您想選擇性地崩潰。 那就是有些節點應該崩潰,而另一些節點則不應崩潰。 為此,您需要制作一個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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM