2016-11-10 1 views
0

Wenn ich diese Funktion

function d3add() 
{d3.select('svg').selectAll('circle').data(data).enter().append('circle') 
    .attr('id',function(d){return d.id;});}" 

und dann mehrmals mit unterschiedlichen Daten wiederholt machen.d3> Wie kann ich nur neue Kreise hinzufügen, ohne vorherige Kreise zu recyceln?

Ich finde einige Kreise haben die gleiche ID, wenn sie unterschiedliche IDs haben sollten. Ich denke, der Grund dafür ist, dass die Recyclingkreise von d3 nur unterschiedliche Positionen haben. Ich muss alle Kreise bei jedem Aufruf der Funktion anzeigen, mit verschiedenen IDs.

Wie kann ich aufhören zu recyceln und nur neue Kreise in einem Svg anhängen?

Gibt es eine Option für "selectAll ('circle')"?

Antwort

0

Nicht sicher, was genau Ihr Problem ist, aber versuchen Sie, eine Schlüsselfunktion bereitzustellen.

.data(data,function(d){return d.id})

Wenn Sie Daten mit unterschiedlichen IDs bereitzustellen, sollten Sie nicht mehr „Recycling“ von Kreisen haben.

+0

Vielen Dank. Ich habe die Art und Weise gelöst, wie Daten aktualisiert werden (vorherige Daten und neue Daten werden akkumuliert) und alle vorherigen Kreise entfernt (und dann alle Kreise ausgewählt), wenn die Funktion wiederholt wird. Wie auch immer du nette Kerl ~ – Brad