2013-03-21 88 views
4

http://jsfiddle.net/HF57g/是放置在时间轴上的单个事件(蓝色矩形)的示例。如果我放大时间轴,则矩形上的矩形的位置会随着轴上的刻度而变化。但同时,矩形水平缩放。如何放大/缩小d3.time.scale而不缩放绑定到时间轴的其他形状

如果我修改代码

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

的以下部分,

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

http://jsfiddle.net/HF57g/1/禁用水平缩放,则矩形的位置的变化快于轴线变焦过程中更输入/输出。

如何放大/缩小time.scale而不缩放其他相关形状?

+0

你能接受也许你的答案(按旁边对号 – VividD 2014-01-17 18:47:09

回答

6

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

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

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

+0

你应该接受你自己的答案,这样的问题不再是“悬而未决”? – vals 2013-03-24 09:17:17