簡體   English   中英

刪除d3節點圖中的鏈接將隨機播放標簽

[英]Deleting links from d3 node-graph shuffles labels

我想從d3.js節點圖中刪除鏈接。 更確切地說,我找到所有與給定id具有相同來源的鏈接,並刪除graph.links的匹配條目。 這似乎可行,但是某種程度上改組了我所有的鏈接標簽,因為標簽位於之前的另一個鏈接。

我准備了一個JSFiddle: https ://jsfiddle.net/FFoDWindow/0nf1hod8/

這是我的deleteLinks -function。

deleteLinks = function(parentNodeId){

        var linksToChildren = link.filter(function(d){
            return d.source.id ==parentNodeId;
        });

        var correspondingLinkPath = linkPath.filter(function(d){
            return d.source.id ==parentNodeId;
        });

        linksToChildren._groups[0].forEach(function(link){
            var data = d3.select(link).data()[0];
            var indexOfLink = graph.links.indexOf(data);
            graph.links.splice(indexOfLink, 1);
        });
        update();
    }   

你需要更多的信息? 謝謝您的幫助,FFoDWindow。

由於您正在重新分配數據,因此最好對新數據使用鍵功能,以匹配已有基准的現有元素。 由於您要刪除一個元素,因此默認的索引順序分配將不起作用。

D3文檔: 聯接數據

我添加了linkPaths的以下關鍵功能:

 linkPath = linkPathGroup
                .selectAll(".linkPath")
                .data(graph.links, function(d) {
         return d ? d.linkLabel : this.id;
        });

以下是linkLabels的內容:

    linkLabel = linkLabelGroup
        .selectAll(".linkLabel")
        .data(graph.links,
function(d) {
 return d ? 'T' + d.linkLabel : this.id;
});

這是更新的JSFiddle

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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