Mam kilka wykresów skonfigurowanych do powiększania kontenera i działa świetnie. Jednak przy początkowym załadowaniu poziom powiększenia jest zbyt blisko. Czy istnieje metoda ustawiania początkowego poziomu zoomu, aby uniknąć konieczności pierwszego pomniejszenia? Jestem zaznajomiony z metodą .scale()
, ale nie miałem żadnej możliwości jej implementacji. Czy to jest droga, czy jest coś, czego mi brakuje?D3.js Ustaw początkowy poziom powiększenia
Oto co mam do tej pory jako odnoszące się powiększać:
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');
Skoro jesteś za pomocą SVG przekształcić 'scale' dla zoom, dlaczego nie ustawić wartość skali statycznie, który daje poziom powiększenia chcesz? –
Brzmi wspaniale!Jak mogę to zrobić? –
Lars, jak dokładnie jest ustawiona statyczna wartość skali? –