Как указать начальный уровень масштабирования в D3?

Я написал сценарий для графического отображения некоторых данных, ориентированных на строки, с полосами, метками и связями между строками. По мере роста набора данных результирующий элемент SVG превысил размер экрана. Чтобы сохранить результат на одном экране (отчасти, чтобы упростить пользователю управление масштабированием d3), я масштабировал элемент SVG перед рисованием, чтобы он умещался на экране. Я сделал это, добавив атрибут преобразования / масштабирования к элементу SVG.

Проблема в том, что d3 behavior.zoom не знает об этом изменении масштаба, поэтому, когда я начинаю увеличивать масштаб, он сначала сбрасывает масштаб на 1. Есть ли способ изменить начальный масштаб в d3 behavior.zoom?


РЕДАКТИРОВАТЬ: добавлен обходной путь

Исправлено это путем умножения d3.event.scale на начальный масштаб в функции redraw (). Итак, начальное объявление элемента SVG -

var SVG = d3.select('#timeline')
    .append('svg:svg')
        .attr('class','chart')
        .attr('transform','scale('+bscale+')')
        .attr('width', wwidth)
        .attr('height', wheight)
        .call(d3.behavior.zoom()
            .extent([[0,Infinity],[0,Infinity],[0,Infinity]])
            .on('zoom', redraw));

и

function redraw() {
    SVG.attr("transform",
        "translate(" + d3.event.translate + ")"
        + "scale(" + d3.event.scale * bscale + ")");
};
11
задан Jerry Neumann 1 January 2012 в 03:44
поделиться