首先,不:这个问题不是关于线条的(还)丑陋的过渡(不过,我可能会为此打开另一个......)。
我在折线图中显示数据,用户可以选择时间范围。然后x轴相应地转变以适应改变的时间范围。在附图中,例如,时间范围是 1 周,然后我切换到 4 周。x 轴上的刻度数相应地从 7 增加到 28。
问题:如何防止 x 轴动画显示在 svg 容器之外?如您所见,额外的日期从左侧飞入,并且它们在远离容器的地方被动画化。
有任何想法吗?
现在,过渡可能以最简单的方式进行:
// format for x-axis
var xAxis = d3.svg.axis()
.scale(x)
.orient("bottom")
.tickFormat(d3.time.format("%d.%m"))
.ticks(d3.time.days, 1)
.tickSubdivide(0);
// Update x-axis
svg.select(".x")
.transition()
.duration(500)
.call(xAxis);