d3.js forçar zoom / dimensionamento automático do layout após o carregamento

estou a usareste layout de força legal de Flowingdata.com para criar um diagrama de rede.

Meu diagrama mostra atualmente entre 5 e 750 nós com suas relações. Funciona muito bem com algumas alterações personalizadas para atender às minhas necessidades. No entanto, uma coisa não consigo trabalhar. eu tenho umviewBox compreserveAspectRatio para ajustar automaticamente o contêiner em que está. Mas, dependendo da quantidade de nós, sempre há alguns nós ao redor das bordas (principalmente superior e inferior) que são cortados. E se houver muito pequenos nós, ele os mostrará no meio com um grande espaço vazio ao redor (é um grande contêiner em que está).

Existe alguma maneira de ampliar automaticamente ou dimensionar o layout para ajuste automático? De modo que um layout grande seja um pouco reduzido e um pequeno layout seja ampliado. Eu tenho uma configuração de evento de zoom para que a rolagem e o deslocamento funcionem como um encanto. Mas isso pode automaticamente fazer isso para ajustar o conteúdo?

O código de inicialização do d3.js:

        vis = d3.select(selection)
        .append("svg")
        .attr("viewBox", "0 0 " + width + " " + height )
        .attr("preserveAspectRatio", "xMidYMid meet")
        .attr("pointer-events", "all")
        .call(d3.behavior.zoom().scaleExtent([.1, 3])
                        .on("zoom", redraw)).append('g');

questionAnswers(4)

yourAnswerToTheQuestion