Odwiedziłem już add and remove nodes in D3js, ale to nie rozwiązuje mojego problemu.Jak usunąć istniejące węzły w d3.js
Jest kilka węzłów za pierwszym razem, następnie chcę dynamicznie dodawać węzły i chcieć, aby węzeł już istniał, zaktualizował węzły i nie wykonał duplikacji.
teraz robi duplikat, nie aktualizując istniejących.
Oto główny kod i pełny kod i skrzypce pracy jest 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);
Dzięki za odpowiedź. Pozwól, że wyjaśnię ci, co chcę zrobić. ** chcesz zaktualizować promień istniejących węzłów i dodać nowe węzły ** ** 1 ** Są to słowa kluczowe przechowywane w bazie danych. ** 2 ** po raz pierwszy pokazuje 20 węzłów i rozmiar promienia w zależności od tego, ile czasu to słowo kluczowe istnieje w bazie danych. ** 3 ** Teraz nowe słowa kluczowe pojawiły się w bazie danych lub dodano kilka duplikatów słów kluczowych. ** 4 ** teraz po 10 sekundach dzwonię do bazy danych i pobieraj słowa kluczowe i chcę aktualizować promień istniejących węzłów i dodawać nowe węzły. –
Zobacz http://bl.ocks.org/mbostock/3808218. Pokazuje ogólny wzorzec aktualizacji w d3, z dwoma następnymi przykładami pokazującymi, jak wykonać dane z kluczem i przejścia. Zasadniczo, co będziesz robić, określając, co dzieje się, gdy dane wprowadzane, liście i zmiany. Będziesz potrzebować funkcji, która definiuje te zachowania, a następnie wywołaj tę funkcję za każdym razem, gdy zaktualizujesz swoje dane. – ckersch