ich ein Balkendiagramm, dass ich völlig in Ordnung, wie dies an Aktualisierung:d3 aktualisiert neue Elemente Übergang in
var bar=chart.selectAll(".bar")
.data(data);
bar.enter().append("rect")
.attr("class", "bar")
.attr("x", function(d) { if(scale(d.values.total)<0){return width/2+widthDateLabel;}else{return width/2-scale(d.values.total)-widthDateLabel;}})
.attr("width", function(d) { return Math.abs(scale(d.values.total)); })
.attr("height", barHeight - 1)
.attr("fill", function(d) { if(scale(d.values.total)<0){ return "DeepPink"}else{return "MediumSeaGreen"}})
.attr("transform", function(d, i) { return "translate(0," + i * barHeight + ")"; });
bar.exit()
.transition().duration(750)
.attr("transform", function(d, i) { return "translate(0," + (i + 1) * barHeight + ")"; })
.style("opacity", 0)
.remove();
bar
.transition().duration(750)
.attr("height", barHeight - 1)
.attr("x", function(d) { if(scale(d.values.total)<0){return width/2+widthDateLabel;}else{return width/2-scale(d.values.total)-widthDateLabel;}})
.attr("width", function(d) { return Math.abs(scale(d.values.total)); })
.attr("fill", function(d) { if(scale(d.values.total)<0){ return "DeepPink"}else{return "MediumSeaGreen"}})
.attr("transform", function(d, i) { return "translate(0," + i * barHeight + ")"; });
Update selbst völlig in Ordnung funktioniert. Übergang auch. Wenn neue Balken hinzugefügt werden, erscheinen sie sofort an der Stelle, an der sie erscheinen soll, und haben keinen Übergang (z. B. Änderung der Deckkraft oder Verzögerung, bevor sie erscheint). Gibt es eine Möglichkeit, zwischen neuen Datenübergängen und Datenübergängen zu unterscheiden? Es sieht ziemlich hässlich aus und ich kann nicht glauben, dass d3 so Dinge macht. Also muss es einen Workaround dafür geben. Vielen Dank im Voraus!
ich die anfänglichen Opazität auf 0 gesetzt würde, dann, wenn sie diese Undurchsichtigkeit, um den Übergang zu aktualisieren erscheinen nur von 0 auf 1 ähnlichen zu dem, was Sie gerade tun, genau gegenüber – thatOneGuy
Entfernen Sie diese Zeile, wenn Sie die rect '.attr (" Höhe ", barHeight - 1)' anhängen – Cyril