[英]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.