Как сделать граф принудительного размещения в D3.js чувствительным к размеру экрана / браузера

У меня есть график с использованием силового макета, но он имеет фиксированную ширинуw и высотаh:

var svg = d3.select("#viz").append("svg")
            .attr("id", "playgraph")
            .attr("width", w)
            .attr("height", h)

var force = d3.layout.force()
              .nodes(nodes)
              .links(links)
              .charge(-1600)
              .linkDistance(45)
              .size([w, h]); 

в результате график svg не масштабируется и не уменьшается, несмотря на изменения размера экрана или окна браузера. Чтобы сделать его отзывчивым (то есть автоматически изменяет размер самого себя), я попытался использоватьviewBox а такжеpreserveAspectRatio атрибуты:

var svg = d3.select("#viz").append("svg")
            .attr("id", "playgraph")
            .attr("width", w)
            .attr("height", h)
            .attr("viewBox", "0, 0, 600, 400")
            .attr("preserveAspectRatio", "xMidYMid meet");

К сожалению, это не сработало, поскольку при настройке размера окна браузера ничего не происходит. Интересно, если.size([w, h]) графа силы имеет какое-либо отношение к этому.

Пожалуйста, пролить свет на то, как использоватьviewBox а такжеpreserveAspectRatio атрибуты с графами макетов силы.

Ответы на вопрос(3)

Ваш ответ на вопрос