D3: Wie kann ich Daten in ein vorhandenes Balkendiagramm
Habe ich erfolgreich meinen ersten Balkendiagramm. Jetzt möchte ich hinzufügen, mehr bars, die bestehenden Diagramm mithilfe der übergänge, um eine schöne user experience.
Hier ist mein code:
var data = [23, 85, 67, 38, 70]; //dummy, normally much more
labellist = ['label1','label2','label3','label4','label5'];
var w = 815,
h = 500,
labelpad = 165,
x = d3.scale.linear().domain([0, 100]).range([0, w]),
y = d3.scale.ordinal().domain(d3.range(data.length)).rangeBands([0, h], .2);
mySvg = d3.select("#chart")
.append("svg");
vis = mySvg.attr("width", w + 40)
.attr("height", h + 20)
.append("svg:g")
.attr("transform", "translate(20,0)");
bars = vis.selectAll("g.bar")
.data(data)
.enter().append("svg:g")
.attr("class", "bar")
.attr("transform", function(d, i) { return "translate(" + labelpad + "," + y(i) + ")"; })
bars.append("svg:rect")
.transition()
.duration(500)
.attr("width", x)
.attr("height", y.rangeBand())
;
var rules = vis.selectAll("g.rule")
.data(x.ticks(10))
.enter().append("svg:g")
.attr("class", "rule")
.attr("transform", function(d) { return "translate(" + x(d) + ", 0)"; });
rules.append("svg:line")
.attr("y1", h)
.attr("y2", h + 6)
.attr("x1", labelpad)
.attr("x2", labelpad)
.attr("stroke", "black");
rules.append("svg:line")
.attr("y1", 0)
.attr("y2", h)
.attr("x1", labelpad)
.attr("x2", labelpad)
.attr("stroke", "white")
.attr("stroke-opacity", .3);
Wie kann ich programmatisch die Daten ändern, hinzufügen und entfernen von anderen bars und lassen Sie die vorhandene Folie nach oben/unten?
Du musst angemeldet sein, um einen Kommentar abzugeben.
Weisen Sie in irgendeiner form der Schlüssel, um die Balken " Daten, also d3 identifizieren können diejenigen, die es in der vorherigen Gruppe. Der default ist index-basiert, und das kann sein, was Sie wollen.
Soweit die übergänge gehen, die Sie möchten, ändern Sie Ihren code so etwas wie dieses:
"Enter ()" - Funktion wird am besten verwendet, um die Struktur zu erstellen sofort. Dann verwenden Sie den ersten Auswahl-Objekt (Balken) für die Anwendung der neuen Daten für alle Elemente.
Du wahrscheinlich auch wollen, entfernen Sie alle veralteten bars. Hier habe ich verkleinert Sie auf 0 und dann entfernt Sie, aber Sie können basteln Sie um die Wirkung, die Sie wollen.