Monday, May 20, 2024
 Popular · Latest · Hot · Upcoming
23
rated 0 times [  28] [ 5]  / answers: 1 / hits: 34701  / 11 Years ago, tue, april 23, 2013, 12:00:00

I have several graphs set up to zoom on the container and it works great. However, on the initial load, the zoom level is way too close. Is there a method of setting the initial zoom level to avoid having to first zoom out? I am familiar with the .scale() method but have not had any luck implementing it. Is this the way to go or is there something I am missing?



Here is what I have thus far as pertaining to zoom:



var margin = {top: 20, right: 120, bottom: 20, left: 120},
width = 50000 - margin.right - margin.left,
height = 120000 - margin.top - margin.bottom;

var x = d3.scale.linear()
.domain([0, width])
.range([0, width]);

var y = d3.scale.linear()
.domain([0, height])
.range([height, 0]);

var tree = d3.layout.tree()
.size([height, width])
.separation(function(a, b) { return (a.parent == b.parent ? 1 : 2) / a.depth; });

var diagonal = d3.svg.diagonal()
.projection(function(d) { return [d.x, d.y]; });

function zoom(d) {
svg.attr(transform,
translate( + d3.event.translate + )+ scale( + d3.event.scale + ));
}

var svg = d3.select(body).append(svg)
.attr(width, width + margin.right + margin.left)
.attr(height, height + margin.top + margin.bottom)
.append(g)
.attr(transform, translate( + margin.left + , + margin.top + ))
.attr(pointer-events, all)
.call(d3.behavior.zoom()
.x(x)
.y(y)
.scaleExtent([0,8])
.on(zoom, zoom))
.append('g');

svg.append('rect')
.attr('width', width*5)
.attr('height', height)
.attr('border-radius', '20')
.attr('fill', 'sienna');

More From » d3.js

 Answers
1

I finally got this to work by setting both the initial transform and the zoom behavior to the same value.



var zoom = d3.behavior.zoom().translate([100,50]).scale(.5);

vis = svg.append(svg:svg)
.attr(width, width)
.attr(height, height)
.call(zoom.on(zoom,zooming))
.append(svg:g)
.attr(transform,translate(100,50)scale(.5,.5));

[#78675] Tuesday, April 23, 2013, 11 Years  [reply] [flag answer]
Only authorized users can answer the question. Please sign in first, or register a free account.
yaquelina

Total Points: 517
Total Questions: 101
Total Answers: 96

Location: Egypt
Member since Tue, Jul 6, 2021
3 Years ago
yaquelina questions
;