2016-04-24 11 views
-1

Ich habe eine d3 Grafik mit häufig wechselnden Datenpunkten, die ich in der Grafik zeigen möchte. Im Moment bin neu zu zeichnen ich die volle Handlung jedes Mal, das Datenobjekt aktualisiert wird:Wie kann ich Daten von d3 graphen aktualisieren?

container.remove() 
container = svg.append("g"); 
drawContainer(); 

mit der Zeichenfunktion in drawContainer:

container.selectAll(".dot") 
    .data(datajson) 
    .enter().append("circle") 
    .attr("class", "dot") 
    .attr("r", 3.5) 
    .attr("cx", xMap) 
    .attr("cy", yMap) 
    .style("fill", function(d) { return color(cValue(d));}) 

Ich versuchte einfach anrufen:

container.selectAll(".dot") 
     .data(newdata) 

, um neue Datenpunkte hinzuzufügen, aber dadurch wurden keine neuen Datenpunkte sichtbar. Wie kann ich den Plot nur mit den neuen Datenpunkten aktualisieren?

+1

hier Lesen Sie hier, wie Sie update delete po erstellen Ints in d3 mit Enter Exit in d3 https://medium.com/@c_behrens/enter-update-exit-6cafc6014c36 – Cyril

Antwort

1

ich glaube, Sie etwas ähnliches zu nennen drawContainer();

Statt

container.selectAll(".dot") 
    .data(newdata); 

tun können, könnten Sie tun:

var dots = container.selectAll(".dot") 
    .data(newdata); 
dots.enter().append("circle") 
    .attr("class", "dot") 
    .attr("r", 3.5) 
    .attr("cx", xMap) 
    .attr("cy", yMap) 
    .style("fill", function(d) { return color(cValue(d));}); 
dots.exit().remove(); 

Ein vollständiges Beispiel: https://bl.ocks.org/mbostock/3808218

Verwandte Themen