我有一个使用强制布局的图表,但它有一个固定的宽度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