Ich habe bereits add and remove nodes in D3js besuchen, aber es löst nicht mein Problem.So entfernen Sie vorhandene Knoten in d3.js
Es gibt einige Knoten zum ersten Mal, dann möchte ich Knoten dynamisch hinzufügen und will, wenn Knoten bereits existiert, aktualisieren Sie diese Knoten und nicht doppelt.
Jetzt macht es Duplikate nicht bestehende aktualisieren.
ist hier Hauptcode und vollständige Code und Geige Arbeit ist here
//handles node elements
var circles = svg.selectAll('g');
//update graph (called when needed)
function restart() {
/***************************************
Draw circles (nodes)
****************************************/
circles = circles.data(data.nodes);
var g = circles.enter()
.append("g")
.attr("class", "gNode")
.attr("cursor", "pointer")
.attr("transform", function(d) { return "translate(" + d.x + "," + d.y + ")"; })
.call(force.drag);
g.append("circle")
.attr({
"class": "node",
"cx": function(d) { return rScale(d.NumOccurrences); },
"cy": function(d) { return rScale(d.NumOccurrences); },
"r": function(d) { return rScale(d.NumOccurrences); }
})
.style("fill", function(d, i) { return colors(i); })
.style("stroke", "#000");
g.append("text")
.attr({
"x": function(d) { return rScale(d.NumOccurrences); },
"y": function(d) { return rScale(d.NumOccurrences); },
"font-family": "sans-serif",
"font-size": "20px",
"fill": "black",
"text-anchor": "middle"
})
.text(function (d) { return d.name; });
g.append("title")
.text(function(d) { return d.name; });
// remove old nodes
circles.exit().remove();
// set the graph in motion
force.start();
}
// app starts here
restart();
function dynamicAddNodes() {
var updatedata = {"name":"ios","NumOccurrences":"500","color":"green","x":0,"y":1}
data.nodes.push(updatedata);
restart();
}
setInterval(dynamicAddNodes, 10000);
Danke für die Antwort. Lass mich dir das erklären, was ich machen möchte. ** möchte den Radius bestehender Knoten aktualisieren und neue Knoten hinzufügen ** ** 1 ** Dies sind Schlüsselwörter, die in der Datenbank gespeichert sind. ** 2 ** Beim ersten Mal werden 20 Knoten und die Größe des Radius basierend auf der Anzahl der Zeit angezeigt, die dieses Schlüsselwort in der Datenbank vorhanden ist. ** 3 ** Jetzt kamen neue Keywords in die Datenbank oder einige hinzugefügte doppelte Keywords. ** 4 ** jetzt nach 10 Sekunden rufe ich zur Datenbank auf und rufe Schlüsselwörter ab und möchte den Radius der vorhandenen Knoten aktualisieren und neue Knoten hinzufügen –
Werfen Sie einen Blick auf http://bl.ocks.org/mbstock/3808218. Es zeigt das allgemeine Update-Muster in d3, wobei die nächsten zwei Beispiele zeigen, wie man verschlüsselte Daten und Übergänge durchführt. Im Grunde geben Sie an, was passiert, wenn Daten eingegeben, verlassen und geändert werden. Sie benötigen eine Funktion, die diese Verhaltensweisen definiert, und rufen diese Funktion dann jedes Mal auf, wenn Sie Ihre Daten aktualisieren. – ckersch