如何在不影响时间轴上绑定的其他形状的情况下缩放d3.time.scale?

4

http://jsfiddle.net/HF57g/ 是一个将单个事件(蓝色方块)放置在时间轴上的示例。如果我缩放时间轴,方块在 x 轴上的位置会与刻度线相协调地改变。但与此同时,方块水平缩放。

如果我修改代码的以下部分:

svg.selectAll(".item").attr("transform", "translate(" + d3.event.translate[0]+", 0)scale(" + d3.event.scale+", 1)");

to

svg.selectAll(".item").attr("transform", "translate(" + d3.event.translate[0]+", 0)scale(1, 1)");

如在http://jsfiddle.net/HF57g/1/中禁用水平缩放,则缩放时矩形的位置变化比轴更大。

如何在不缩放其他相关图形的情况下缩放时间比例尺?


你可以尝试接受你的答案(通过点击旁边的勾选标记)吗? - VividD
1个回答

6

最终我添加了一个更新函数,根据scale(x)返回的新位置重新排列矩形的位置。

function update_events(){
    return svg.selectAll("rect.item")
        .attr("x", function(d){return scale(d);})    
}

这是最终版本:http://jsfiddle.net/HF57g/2/

你应该接受自己的答案,这样问题就不再是“未回答”的了。 - vals

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接