que tienen un diseño gráfico usando la fuerza, pero tiene un ancho fijo y altura w
h
:Como hacer gráfico de la disposición vigente en D3.js sensible al tamaño de pantalla/navegador
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]);
lo que se traduce en un SVG gráfico que no aumenta o disminuye a pesar de los cambios en la pantalla o el tamaño de la ventana del navegador. Con el fin de hacer que responda (es decir, cambia automáticamente el tamaño en sí), he intentado usar viewBox
y preserveAspectRatio
atributos:
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");
Por desgracia, esto no funcionó como no ocurre nada cuando se ajusta el tamaño de la ventana del navegador. Me pregunto si el .size([w, h])
del gráfico de fuerza tiene algo que ver con esto.
Por favor arroja algo de luz sobre cómo usar los atributos viewBox
y preserveAspectRatio
con gráficos de fuerza de diseño.
Es posible que también desee adjuntar su función de redibujado a 'window.onresize' – Wex
Esta pregunta es bastante antigua, pero para aquellos que lo encuentran útil, también puede considerar restringir los nodos a un cuadro delimitado. Al cambiar el tamaño, los nodos permanecerán en la pantalla. Ejemplo: http://bl.ocks.org/mbostock/1129492 – joshfindit