2016-05-05 17 views
1

Ich habe diesen Code für meine Kraft gerichteten Graphen zu aktualisieren, die ich jedesmal, wenn ich Knoten und Verbindungen aus den respectives Arrays löschen rufen:Löschen/Ändern Etiketten in Kraft Directed Graph

function update_graph() { 

link_update = svg.selectAll(".link").data(
     force.links(), 
     function (d) { 
      return d.source.id + "-" + d.target.id; 
     } 
); 

link_update.enter() 
     .insert("line", ".node") 
     .attr("class", "link"); 

link_update.exit() 
     .remove(); 

node_update = svg.selectAll(".node").data(
     force.nodes(), 
     function (d) { 
      return d.id; 
     } 
); 

node_update.enter() 
     .append("circle") 
     .attr("class", function (d) { 
      return "node " + d.id; 
     }) 
     .attr("r", function (d) { 
      return radio/d.group; 
     }) 
     .call(force.drag) 
     .on('dblclick', connectedNodes); 


//labels 
node_update.enter().append("text") 
.attr("dx", function (d) { 
return (radio-7)/d.group; 
}) 
.attr("dy", function (d) { 
return (radio-7)/d.group; 
}) 
.text(function (d) { 
return d.id; 
}) 
.style("stroke", "black"); 


// Remove the SVG circle whenever a node vanishes from the node list. 
node_update.exit() 
     .remove(); 

// Start calling the tick() method repeatedly to lay out the graph. 
force.start(); 

}

Die Knoten und Verknüpfungen werden korrekt aus dem Diagramm gelöscht, aber die Beschriftungen bleiben dort. Wie kann ich die Beschriftungen mit den Knoten synchronisieren und nur anzeigen, was sich gerade im Diagramm befindet?

Fiddle replizieren das Problem: https://jsfiddle.net/vzes4h8y/

Vielen Dank im Voraus

+1

Können Sie zusammen eine Arbeits Geige – thatOneGuy

+1

Hier eine Geige ist das Problem zu replizieren, klicken Sie auf ein paar Mal in „Add Node“ und dann in „Reset Graph“ https: // jsfiddle .net/vzes4h8y/ – RCRH89

Antwort

1

Sie können eine andere Variable für den

node_updateText = svg.selectAll(".text").data(
     force.nodes(), 
     function (d) { 
      return d.id; 
     } 
).enter(); 

Text erstellen und sie entsprechend zu entfernen. Hier

ist die Geige: https://jsfiddle.net/LmqLtr8e/

+0

Ich sehe, es war einfacher als ich dachte. Vielen Dank für Ihre Zeit! – RCRH89

+0

Keine Sorgen. Ich habe die Knöpfe fast nicht gefunden! –