d3 js - 更新多折线图中的文本元素时遇到问题
d3 js - trouble updating text elements in multiple line chart
更新:
这里有一个可用的 jsFiddle:
在此之后我已经开始工作了,最后移动了这个片段,但我很难理解为什么 - 我怀疑这不是进行转换和更新的好方法。非常感谢任何帮助。
text.datum(function(d) {return { name: d.name, value: d.values[d.values.length - 1]}; })
.transition()
.duration(750)
.attr("transform", function(d) {return "translate(" + x(d.value.Datum) + "," + y(d.value.Antal) + ")";});
有另一个问题不涉及图表的文本部分,而是涉及线条,在这里回答:
同时我解决了行我也解决了如何更改文本。就像上面的问题。
var t01 = svg.selectAll(".city")
.data(dsMainArr,function key(d) {return d.name;});
var t01Enter = t01.enter().append("g")
.attr("class", "city");
t01Enter.append("text")
.attr("class", "textEnd")
.datum(function(d) {return {name: d.name, value: d.values[d.values.length - 1]}; })
.attr("transform", function(d) { return "translate(" + x(d.value.Datum) + "," + y(d.value.Antal) + ")"; })
.attr("x", 3)
.attr("dy", ".35em")
.text(function(d) { return d.name; })
.transition().duration(750);
t01.exit().transition().duration(750).remove();
var t1 = t01.transition();
t1.select("text").attr("transform",
function(d) { var len = d.values.length;
return "translate(" + x(d.values[len-1].Datum)
+ ","
+ y(d.values[len-1].Antal) + ")";
}
);
更新:
这里有一个可用的 jsFiddle:
在此之后我已经开始工作了,最后移动了这个片段,但我很难理解为什么 - 我怀疑这不是进行转换和更新的好方法。非常感谢任何帮助。
text.datum(function(d) {return { name: d.name, value: d.values[d.values.length - 1]}; })
.transition()
.duration(750)
.attr("transform", function(d) {return "translate(" + x(d.value.Datum) + "," + y(d.value.Antal) + ")";});
有另一个问题不涉及图表的文本部分,而是涉及线条,在这里回答:
同时我解决了行我也解决了如何更改文本。就像上面的问题。
var t01 = svg.selectAll(".city")
.data(dsMainArr,function key(d) {return d.name;});
var t01Enter = t01.enter().append("g")
.attr("class", "city");
t01Enter.append("text")
.attr("class", "textEnd")
.datum(function(d) {return {name: d.name, value: d.values[d.values.length - 1]}; })
.attr("transform", function(d) { return "translate(" + x(d.value.Datum) + "," + y(d.value.Antal) + ")"; })
.attr("x", 3)
.attr("dy", ".35em")
.text(function(d) { return d.name; })
.transition().duration(750);
t01.exit().transition().duration(750).remove();
var t1 = t01.transition();
t1.select("text").attr("transform",
function(d) { var len = d.values.length;
return "translate(" + x(d.values[len-1].Datum)
+ ","
+ y(d.values[len-1].Antal) + ")";
}
);