d3.js wymusza układ automatycznego powiększania / skalowania po załadowaniu

używamten ładny układ sił z Flowingdata.com, aby utworzyć diagram sieciowy.

Mój diagram pokazuje obecnie od 5 do 750 węzłów z ich relacjami. Świetnie sprawdza się w przypadku niektórych niestandardowych zmian, które pasują do moich potrzeb. Jednak jednej rzeczy nie mogę dostać się do pracy. mamviewBox zpreserveAspectRatio aby automatycznie dopasować pojemnik, w którym się znajduje. Ale w zależności od ilości węzłów zawsze są jakieś węzły na krawędziach (głównie góra i pośladki), które zostają odcięte. A jeśli są bardzo małe węzły, to pokazuje je w środku z ogromną pustą przestrzenią wokół (jest to duży kontener, w którym się znajduje).

Czy jest jakiś sposób na automatyczne powiększanie lub skalowanie układu do automatycznego dopasowania? Aby duży układ był nieco pomniejszony, a mały układ powiększony. Mam konfigurację powiększenia, więc przewijanie i przesuwanie działa jak urok. Ale czy może to automatycznie zrobić, aby dopasować zawartość?

Kod startowy 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