所以我使用这个例子D3 force layout - .exit().remove() just giving back errors on tick event来创建我的力导向布局。
现在我的问题是,无论如何,当您右键单击删除节点以更改功能时,您不会删除实际节点,而是连接到某个类型的节点。
例如,如下图所示,如果我点击A,我想要删除任何蓝色和红色但不从c中删除红色或蓝色的内容,如果我点击b,它将不会删除任何内容。
我试过但我失败了。
答案 0 :(得分:0)
似乎你想要选择性崩溃。 这是一些节点应该崩溃但其他节点不应该崩溃。 为此,您需要创建一个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();
}
完整的工作代码为here
请注意,在点击节点“cluster”的小提琴中,除节点“mergeEdge”外,其所有子节点都将崩溃,因为类型为蓝色。