javascript - How to zoom inout d3.time.scale without scaling other shapes bound to timeline - Stack Overflow

is an example of a single event(blue rect) placed on the timeline. If i zoom into the timeline, rect&

/ is an example of a single event(blue rect) placed on the timeline. If i zoom into the timeline, rect's placement on the x axis changes in harmony with the ticks on axis. but at the same time, rect is scaled horizontally.

if i modify the following section of the code

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)");

as in / to disable horizontal scaling, then the rect's position changes much more than the axis' during zoom in/out.

How can i zoom in/out time.scale without scaling other related shapes?

http://jsfiddle/HF57g/ is an example of a single event(blue rect) placed on the timeline. If i zoom into the timeline, rect's placement on the x axis changes in harmony with the ticks on axis. but at the same time, rect is scaled horizontally.

if i modify the following section of the code

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)");

as in http://jsfiddle/HF57g/1/ to disable horizontal scaling, then the rect's position changes much more than the axis' during zoom in/out.

How can i zoom in/out time.scale without scaling other related shapes?

Share Improve this question edited Feb 3, 2014 at 22:22 Joeytje50 19.2k15 gold badges68 silver badges99 bronze badges asked Mar 21, 2013 at 23:37 altunyurtaltunyurt 2,9564 gold badges39 silver badges53 bronze badges 1
  • could you perhaps accept your answer (by pressing checkmark beside it? – VividD Commented Jan 17, 2014 at 18:47
Add a ment  | 

1 Answer 1

Reset to default 6

I ended up adding an update function to rearrange the rects' places depending on the new positions returned by scale(x).

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

Here's the final version: http://jsfiddle/HF57g/2/

发布者:admin,转转请注明出处:http://www.yc00.com/questions/1745463537a4628815.html

相关推荐

发表回复

评论列表(0条)

  • 暂无评论

联系我们

400-800-8888

在线咨询: QQ交谈

邮件:admin@example.com

工作时间:周一至周五,9:30-18:30,节假日休息

关注微信