Ich versuche, eine Multi-Serie Liniendiagramm zu erstellen (basierend auf dem Beispiel von Mike Bostock), aber zwischen mehreren Datensätzen wechseln. Ich habe die Linien zum Ein- und Ausstieg bekommen, aber die Beschriftungen für jede Zeile bleiben stehen, nachdem sie verschwunden sein sollten. Screenshot at this link.D3 Exit mehrere Serien Liniendiagramm Etiketten auf Übergang
Darüber hinaus sind die Linien auf eine ungerade Art und Weise Übergang; fast so, als ob sie nur die selbe Linie erweitern würden, um eine neue zu erstellen (Second screenshot at this link).
Hier ist der relevante Teil meines Codes (wo ich die Linien zu zeichnen und fügen Sie Labels):
var line = d3.svg.line()
.interpolate("basis")
.x(function(d) { return x(d.Date); })
.y(function(d) { return y(d.candidate); });
var person = svg_multi.selectAll(".candidate")
.data(people);
var personGroups = person.enter()
.append("g")
.attr("class", "candidate");
person
.enter().append("g")
.attr("class", "candidate");
personGroups.append("path")
.attr("class", "line")
.attr("d", function(d) { return line(d.values); })
.style("stroke", function(d) { return color(d.name); });
var personUpdate = d3.transition(person);
personUpdate.select("path")
.transition()
.duration(1000)
.attr("d", function(d) {
return line(d.values);
});
person
.append("text")
.datum(function(d) { return {name: d.name, value: d.values[d.values.length - 1]}; })
.attr("transform", function(d) { return "translate(" + x(d.value.Date) + "," + y(d.value.candidate) + ")"; })
.attr("x", 3)
.attr("dy", ".35em")
.text(function(d) { return d.name; });
person.selectAll("text").transition()
.attr("transform", function(d) { return "translate(" + x(d.value.Date) + "," + y(d.value.candidate) + ")"; });
person.exit().remove();
Danke, das hat funktioniert! – user3740848