Tôi có một số đồ thị được thiết lập để phóng to vùng chứa và nó hoạt động rất tốt. Tuy nhiên, khi tải ban đầu, mức thu phóng quá gần. Có phương pháp thiết lập mức thu phóng ban đầu để tránh phải thu nhỏ đầu tiên không? Tôi đã quen thuộc với phương thức .scale()
nhưng chưa có bất kỳ may mắn nào khi triển khai nó. Đây có phải là con đường để đi hoặc có cái gì đó tôi đang thiếu?D3.js Đặt mức thu phóng ban đầu
Dưới đây là những gì tôi có cho đến nay như liên quan đến phóng to:
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');
Vì bạn đang sử dụng SVG transform 'scale' cho zoom của bạn, tại sao không đặt một giá trị quy mô tĩnh cung cấp cho bạn mức độ phóng bạn muốn? –
Điều đó thật tuyệt vời!Làm thế nào để làm điều đó? –
Lars, giá trị quy mô chính xác được đặt tĩnh như thế nào? –