我有一个简单的折线图,每 5 秒检查一次更新并在需要时重新绘制线/比例。这一切都很好,除了:数据点。
我在重绘中缺少什么来移动点?首次渲染图形时,这些点就在那里。但是在更新时,当线重新绘制时它们不会移动。所以我在更新时选择了一个新的数据源,而旧的数据点保持不变。
更新时重绘
var svgAnimate = d3.select("#animateLine").transition();
svgAnimate.select(".line") // change the line
.duration(750)
.attr("d", valueline(data));
svgAnimate.selectAll(".circle") // change the circle
.duration(750)
.attr("d", valueline(data));
svgAnimate.select(".x.axis") // change the x axis
.duration(750)
.call(xAxis);
svgAnimate.select(".y.axis") // change the y axis
.duration(750)
.call(yAxis);
初始图:
svgAnimate.selectAll("dot")
.data(data)
.enter().append("circle")
.attr("class", "circle")
.attr("r", 5)
.style("fill", function(d) {
if (d.close <= 400) {return "red"}
else { return "black" }
;})
.attr("cx", function(d) { return x(d.date); })
.attr("cy", function(d) { return y(d.close); })
这是我不想要的。